socket之close和shutdown

定义

#include<unistd.h>
int close(int sockfd);     //返回成功为0,出错为-1.
#include<sys/socket.h>
int shutdown(int sockfd,int howto);  //返回成功为0,出错为-1.
该函数的行为依赖于howto的值

1.SHUT_RD:值为0,关闭连接的读这一半。

2.SHUT_WR:值为1,关闭连接的写这一半。

3.SHUT_RDWR:值为2,连接的读和写都关闭。

区别

  • close函数会关闭套接字ID,如果有其他的进程共享着这个套接字,那么它仍然是打开的,这个连接仍然可以用来读和写,只是套接字的引用计数减1。
  • shutdown会切断进程共享的套接字的所有连接,不管这个套接字的引用计数是否为零,那些试图读得进程将会接收到EOF标识,那些试图写的进程将会检测到SIGPIPE信号,同时可利用shutdown的第二个参数选择断连的方式
  • 调用shutdown()只是进行了TCP断开, 并没有释放文件描述符
# socket  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×