close与shutdown关闭socket连接的区别

本文详细解释了socket编程中close和shutdown两个函数的区别与使用方法。close函数通过减少文件描述符的引用计数来间接关闭socket连接;而shutdown函数则直接终止socket连接,并提供了选择性地关闭读、写或读写操作的功能。

close: int close(int fd)

并非马上关闭fd对应的socket连接,而是对其文件描述符的引用计数减1,

只有当fd的引用计数为0时,才关闭连接,对应fork复制的socket描述符,

无论时父进程还是子进程都需要调用close才能正确关闭连接。

 

shutdown: int shutdown(int fd, int howto)

专为针对网络编程设计,一旦调用便终止socket连接,

    howto参数:

   1、SHUT_RDWR (read & write) 同时关闭socket上的读写。

   2、SHUT_WR (write) 关闭socket上的写操作,socket的发送缓存区会在关闭连接之前全部发送出去,

        不可对socket进行写操作。

   3、SHUT_RD (read) 关闭socket上的读操作,且socket的接受缓存区将丢弃全部数据。

转载于:https://www.cnblogs.com/ydlme/p/4479360.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值