zoukankan      html  css  js  c++  java
  • 关于socket的关闭:close和shutdown

      通过两种方式可以关闭一个socket:close和shutdown。直接调用close关闭socket存在以下两个问题:

    1. close只是将socket 描述字的访问计数减1,仅当描述字的访问计数为0时,才真正的关闭socket。

    2.close终止了数据传输的两个方向:读与写。tcp管道是全双工的,有时候我们仅仅是想通知另一端我们已经完成了数据的发送,但还想继续接收另一端发送过来的数据,在这种情况下调用close关闭socket是不合适的。

      shutdown可以解决上面关于close的两个问题,shutdown系统调用如下:

    #include <sys/socket.h>
    /* 以how指定的方式关闭socket */
    int shutdown(int socket, int how);

      其中shutdown的how参数可以指定为{SHUT_RD:关闭连接的读、SHUT_WR:关闭连接的写、SHUT_RDWR:关闭连接的读和写}。

  • 相关阅读:
    [NOIP2013]华容道
    [随笔]冲NOIP一等奖。。
    [NOIP2015]联合权值
    [随笔]我回来啦!
    [考试]20151105
    [知识点]最近公共祖先LCA
    [BZOJ3751/NOIP2014]解方程
    [旧版][知识点]字符串Hash
    NOIP2016题解
    NOIP2016游记
  • 原文地址:https://www.cnblogs.com/VincentXu/p/3332022.html
Copyright © 2011-2022 走看看