说明:
关闭套接字API有:
如图分为输入流和输出流两个流,关闭其一就是半关闭。
单方面断开可能带来的问题如图:
主机A发完了就断开了,万一主机B还有数据恢复咋搞。
那就采用半关闭,主机A发完就关闭发送流,保留接收流。
/* sock: 需要断开套接字文件描述符 howto: 传递断开方式信息 成功时返回 0 ,失败时返回 -1 */ #include <sys/socket.h> int shutdown(int sock, int howto);
参数howto
:
SHUT_RD
: 断开输入流。套接字无法接收,同时,缓冲区的数据也被清空。SHUT_WR
: 断开输出流。套接字无法发送,但是和 close()
一样,缓冲区的数据依旧能发送出去。SHUT_RDWR
: 同时断开 I/O 流。同时关闭 I/O 流。小知识:
close()
后:
shutdown()
后: