connaddr.sin_family=AF_INET; //使用AF_INET域
connaddr.sin_addr.s_addr=inet_addr(argv );//确定要链接的地址
connaddr.sin_port=htons(50002);//要链接的端口号
connfd=socket(AF_INET,SOCK_STREAM,0);//创建套接字
len=sizeof(connaddr);//获取地址长度
connect(connfd,(struct sockaddr*)&connaddr,len);//创建链接
write(connfd,"Hello !",7);//往服务器写数据
while(res=read(connfd,buff,BUFSIZ))
{
printf("%d\n",res); //显示收到的字节数
res=read(fileno(stdin),buff,BUFSIZ); //从服务器读取数据
write(connfd,buff,res);
}
close(connfd);//关闭套接字
exit(0);
}
虽然每次服务器,客户端都会给对方发送一个ACK来确认收到,但read函数一般不会读取到,如果某一方发送FIN或RST信号,read都会当作读到文件尾来处理,即返回0;