TCP 客户端实现
/*
客户端
*/
//定义一个错误的宏定义函数
#define ERR_EXIT(m) \
do \
{ \
perror(m);
exit(EXIT_FAILURE);
} while(0);
int main(void)
{
int sock;
if(sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) < 0)
ERR_EXIT("socket");
struct sockaddr_in servaddr;
memset(&servaddr, 0 , sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(5188);
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //地址转换
if( connect(sock, (struct sockaddr *) &servaddr, sizeof(servaddr) ) < 0 )
ERR_EXIT("connect");
//存储数据
char sendbuf[1024] = {0};
char recvbuf[1024] = {0};
while(fgets(sendbuf, sizeof(sendbuf), stdin) != NULL)
{
write(sock, sendbuf, strlen(sendbuf));
read(sock, recvbuf, sizeof(recvbuf));
fputs(recvbuf, stdout); //打印
memset(sendbuf, 0 ,sizeof(sendbuf));
memset(recvbuf, 0 ,sizeof(recvbuf));
}
close(sock);
return 0;
}源码:
02.c