Linux网络编程之socket编程(十)

前面两篇博文学习总结了使用select函数改进回射客户端和服务器端。下面接着学习close与shutdown区别,以及进一步改进回射客户程序。

1.close与shutdown区别

(1)close终止了数据传送的两个方向。
(2)shutdown可以有选择的终止某个方向的数据传送或者终止传送的两个方向。
(3)shutdown how=1(SHUT_WR)就可以保证对等方接收一个EOF字符,而不管其他进程是否已经打开了套接字。而close不能保证,直到套接字引用计数减为0时才发送。也就是说直到所有的进程都关闭了套接字。

2.shutdown改进回射客户/服务器

利用shutdown保证已经发送出去的数据可以发送完毕,而不应该使用close:
shutdown(sock, SHUT_WR);

发表评论

电子邮件地址不会被公开。 必填项已用*标注