socket的shutdown与close

shutdown原型

int shutdown(int socket, int how);
socket 指定socket的文件描述符
how    指定shutdown的类型
SHUT_RD

禁止读操作

SHUT_WR
    禁止写操作
SHUT_RDWR
    禁止读和写

close原型

int close(int fd);

close是内核函数,关闭进程占有的文件句柄,内核中的每一个文件句柄都有一个引用计数,每个打开该文件句柄的进程都将计数+1,每次调用close会将进程占有的文件描述符关闭,同时内核中的引用计数-1.

区别

shutdown直接作用于socket连接,调用shutdown以后,所有关联该socket连接的文件描述符均被影响(不能读或者写,或者均不能),即影响是跨进程的,shutdown不会关闭socket,socket会在关联的文件描述符内核计数为0时被动关闭。

close作用于进程打开的文件描述符,close以后进程将不能够访问该socket,该socket连接会在引用计数变为0时被动关闭,假如多个进程访问同一个socket的文件描述符,其中一个进程调用close(sockfd)其他进程可以继续进行socket通信。

上一篇:HDU6579 2019HDU多校训练赛第一场1002 (线性基)


下一篇:IDE UltraEdit 图文激活+安装教程