“优雅”断开的套接字连接

之前用的方法不够优雅是因为,我们是调用close或closesocket函数单方面断开连接。

1.解释TCP中“流”的概念。UDP中能否形成流?请说明原因。

答:两台主机通过套接字建立连接后进入可交换数据的状态,又称“流形成的状态”。也就是把建立套接字后可交换数据的状态看作是一种流,此处的流可以比作水流,水朝着一个方向流动,同样,在套接字的流中,数据也只能向一个方向移动,因此,为了进行双向通信,需要2个流。

2.UDP中能否形成流?请说明原因。

答:UDP不能形成流, SOCK_DGRAM 表明数据将是数据报(datagrams)的形式。

3.Linux中的close函数或windows中的closesocket函数属于单方面断开连接的方法,有可能带来一些问题。什么是单方面断开连接,什么情况下会出现问题?

答:close函数断开连接意味着完全断开连接,完全断开不仅指无法传输数据,而且不能接受数据。比如主机A发送完最后的数据后,调用close函数断开了连接,之后主机A无法再接受主机B传输的数据。实际上,是完全无法调用与接收数据相关的函数,最终,由主机B传输的,主机A必须接收的数据也就销毁了。

4.什么是半关闭?针对输出流执行半关闭的主机处于何种状态?半关闭会导致对方主机接受什么消息?

答:半关闭函数:int shutdown(int sockfd,int howto)

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

  howto:传递断开方式信息

第二个参数:SHUT_RD:断开输入流,SHUT_WR:断开输出流,SHUT_RDWR:同时断开I/O流。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值