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

《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 基于半关闭的文件传输程序



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值