zoukankan      html  css  js  c++  java
  • close函数

    int close(int sockfd);

    close一个TCP套接字的默认行为是把该套接字标记成已关闭,然后立即返回到调用进程,

    该套接字描述符不能再由调用进程使用,也就是说它不能再作为read或write的第一个参数

    并发服务器中父进程关闭已连接套接字只是导致相应描述符的引用数值减1,既然引用数值仍大于0,这个close调用并不引发TCP的四分组连接终止序列

    对于父进程与子进程共享已连接套接字的并发服务器来说,这正是所期望的

    如果我们确实想在某个TCP连接上发送一个FIN,那么可以改用shutdown函数以代替close

    如果父进程对每个由accept返回的已连接套接字都不调用close,那么并发服务器将会发生什么

    首先,父进程最终将耗尽可用描述符,因为任何进程在任何时刻可拥有的打开着的描述符通常是有限制的

    不过更重要的是,没有一个客户连接会被终止,

    当子进程关闭已连接套接字时,它的引用计数值将由2减为1且保持为1

    因为父进程永不关闭任何已连接套接字

    这将妨碍TCP连接终止序列的发生,导致连接一直打开着。

    ========================if i have some wrong, please give me a message, thx.========================
  • 相关阅读:
    bzoj3884: 上帝与集合的正确用法(数论)
    洛谷10月月赛R2·浴谷八连测R3题解
    bzoj5055: 膜法师(BIT)
    bzoj2213: [Poi2011]Difference(思维题)
    bzoj1016: [JSOI2008]最小生成树计数(kruskal+dfs)
    一模 (2) day2
    一模 (2) day1
    Prime Palindromes
    常州培训 day5 解题报告
    一模 (1) day2
  • 原文地址:https://www.cnblogs.com/ailx10/p/5350488.html
Copyright © 2011-2022 走看看