第七章 优雅地断开套接字连接

来源:互联网 发布:截面数据统计分析方法 编辑:程序博客网 时间:2024/06/05 15:07

《TCP/IP网络编程》 尹圣雨 P120~P124


调用Linux的close函数或者windows的closesocket函数是单方面断开连接,意味着完全断开。完全断开不仅指无法传输数据,也不能接收数据。


基于TCP的半关闭 Half-close,即“只关闭一部分数据交换中的使用的流”的方法应运而生。断开一部分连接是指,可以传输数据但无法接收,或可以接收数据但无法传输。


套接字和流Stream

两台主机通过套接字建立连接后进入可交换数据的状态,称“流形成的状态”。即把建立套接字后可交换数据的状态看作一种流。

在套接字的流中,数据只能向一个方向流动。


用来关闭其中一个流的showdown函数

#include<sys/socket.h>int shutdown(int sock,int howto);
成功时返回0,失败时返回-1.

sock 需要断开的套接字文件描述符

howto 传递断开方式新

第二个参数决定断开连接的方式,其可能值如下:

SHUT_RD:断开输入流,套接字无法接收数据。即使输入缓冲收到数据也会抹去,而且无法调用输入相关函数。

SHUT_WR:断开输出流,无法传输数据。如果输出缓冲还留有未传输的数据,则将传递到目标主机。

SHUT_RDWR:同时断开I/O流


P120 为何需要半关闭


P121~P124 基于半关闭的文件传输程序



阅读全文
0 0
原创粉丝点击