socket编程——关闭(shutdown 和 close的区别)
2012-10-08 16:42
459 查看
socket的关闭有close 和shutdown两种API,那么他们的区别在哪里呢?
close ----- 在多进程的情况下,关闭本进程的socket id,但链接还是开着的,用这个socket id的其它进程还能用这个链接,能读或写这个socket id,直到所有的进程都进行了 close,才真正关闭这个套接字,但当他真正执行关闭的时候是完全关闭,既不处理发送也不处理接收数据,如果对端发送数据过来会收到RST消息。
shutdown -- 即便在多进程的情况下面,也是直接进行关闭的,破坏了socket 链接,其他进程的链接也会被关闭,但他关闭的时候只关闭一般,即发送数据通道关闭,接收数据还 是可以的。如果写则可能会收到一个SIGPIPE信号,这个信号可能直到socket buffer被填充了才收到。
close ----- 在多进程的情况下,关闭本进程的socket id,但链接还是开着的,用这个socket id的其它进程还能用这个链接,能读或写这个socket id,直到所有的进程都进行了 close,才真正关闭这个套接字,但当他真正执行关闭的时候是完全关闭,既不处理发送也不处理接收数据,如果对端发送数据过来会收到RST消息。
shutdown -- 即便在多进程的情况下面,也是直接进行关闭的,破坏了socket 链接,其他进程的链接也会被关闭,但他关闭的时候只关闭一般,即发送数据通道关闭,接收数据还 是可以的。如果写则可能会收到一个SIGPIPE信号,这个信号可能直到socket buffer被填充了才收到。
相关文章推荐
- socket编程——关闭(shutdown 和 close的区别)
- socket关闭close和shutdown的区别
- 用于关闭socket 的close 和shutdown 区别
- socket关闭的close和shutdown区别
- linux网络编程之socket(十):shutdown 与 close 函数 的区别
- socket关闭的close和shutdown区别
- socket链接的关闭close和shutdown的区别_TIME_WAIT和CLOSE_WAIT什么时刻出现_如何处理
- Socket 编程中 close() 和 shutdown() 有什么区别?
- close与shutdown关闭socket连接的区别
- socket关闭的close和shutdown区别
- linux网络编程之socket(十):shutdown 与 close 函数 的区别
- socket关闭的close和shutdown区别
- socket链接的关闭close和shutdown的区别,TIME_WAIT和CLOSE_WAIT什么时刻出现,如何处理
- socket半关闭 shutdown close 区别
- socket关闭的close和shutdown区别
- socket关闭close和shutdown区别
- socket关闭的close和shutdown区别[转]
- socket链接的关闭close和shutdown的区别_TIME_WAIT和CLOSE_WAIT什么时刻出现_如何处理
- linux网络编程之socket(十):shutdown 与 close 函数 的区别
- socket关闭的close和shutdown区别