一、close与shutdown 的区别:
1、close终止了数据传送的两个方向; 这个函数会对套接字引用计数减一,一旦发现套接字引用计数到 0,就会对套接字进行彻底释放,并且会关闭 TCP 两个方向的数据流。
2、shutdown 可以有选择的终止某个方向的数据传送或者数据传送的两个方向、

二、shutdown 如果howto=1(SHUT_WR),就可以保证对等方接收到一个EOF字符,而不管其他进程是否已经打开了套接字(不管引用计数是否为1都激发TCP的正常终止连接)。shutdown直接使得该套接字不可用,如果有别的进程企图使用该套接字,将会受到影响。而close不能保证(详见下面三中的例子,conn引用计数减为0才关闭),直到套接字引用计数减为0时才发送。也就是说直到所有的进程都关闭了套接字。

三、
  int shutdown(int sockfd,int howto)
    howto=SHUT_RD (0)关闭连接的读的一半,不再接收数据
    howto=SHUT_WR (1)关闭连接的写的一半,
    howto=SHUT_RDWR(2)

例子:

int conn;
pid_t pid=fork();
if(pid==-1)
ERR_EXIT("fork");
if(pid==0)     //子进程
{//通信//....       //子进程使用完conn,close(conn) 引用计数减为0,这时才会向双方发送FIN段。close(conn);
} else if(pid>0)   //父进程
{//父进程不会向客户端发送FIN.要考虑到引用计数。//close(conn) 父进程用不到conn,将conn引用计数减一 。 //shutdown(conn,SHUT_WR) 的话不理会引用计数,直接向对方发送FIN段close(conn);
}

网络编程close与shutdown的区别相关推荐

  1. 网络编程学习笔记(shutdown函数)

    终止网络连接的正常方法是close,但close有两个限制,可由shutdown来避免 1.close将描述字的访问计数减1,仅在此计数为0时才关闭套接口.用shutdown可以激发TCP的正常连接终 ...

  2. Python网络编程—(TCP、UDP区别)

    tcp套接字和udp套接字编程区别 1.流式套接字是以字节流方式传输数据,数据报套接字以数据报形式传输 2.tcp套接字会有粘包,udp套接字有消息边界不会粘包 3.tcp套接字保证消息的完整性,ud ...

  3. Linux网络编程中的几组类似功能的区别

    1.bzero与memset char buff[1024]; memset(buff,0,sizeof(buff));bzero(buff, sizeof(buff)); struct sockad ...

  4. Java基础学习总结:网络编程之(四)TCP与UDP的区别及常见的网络协议(转)

    TCP和UDP的区别 原文:https://blog.csdn.net/li_ning_/article/details/52117463 1.TCP与UDP基本区别 基于连接与无连接 TCP要求系统 ...

  5. C语言网络编程:close或者shutdown断开通信连接

    文章目录 前言 close函数介绍 shutdown函数介绍 前言 这里在主要通过实例进行描述close函数在网络编程中的使用 TCP编程模型中客户端或者服务器只要主动通过close发起断开连接的请求 ...

  6. 网络编程中BIO和NIO的区别

    网络编程中BIO和NIO的区别 先上结论 BIO中,每个请求因为要阻塞直到结果返回,所以比较好的解决是每个请求都需要一个线程来处理,但是线程又是他的制约条件. NIO中,每个请求进来都会绑定到一个ch ...

  7. 【Linux网络编程】无连接和面向连接协议的区别

    网络编程中最基本的概念就是面向连接(connection-oriented)和无连接(connectionless)协议.尽管本质上来说,两者之间的区别并不难理解,但对那些刚刚开始进行网络编程的人来说 ...

  8. 网络编程知识预备(3) ——SOCKET、TCP、HTTP之间的区别与联系

    参考:SOCKET,TCP,HTTP之间的区别与联系 作者:丶PURSUING 发布时间: 2021-03-19 11:54:01 网址:https://blog.csdn.net/weixin_44 ...

  9. 脑残式网络编程入门(八):你真的了解127.0.0.1和0.0.0.0的区别?

    本文由"小姐姐养的狗"原创发布于"小姐姐味道"公众号,原题<127.0.0.1和0.0.0.0地址的区别>,收录时有优化和改动.感谢原作者的分享. ...

  10. linux网络编程--shut_down和close()函数的区别

    在Linux C网络编程中,一共有两种方法来关闭一个已经连接好的网络通信,它们就是close函数和shutdown函数,它们的函数原型分别为: 1 #include<unistd.h> 2 ...

最新文章

  1. 礼赞 Wordpress,蝉知可直接使用 Wordpress 模板
  2. 19年8月 字母哥 第五章 静态资源与模板引擎的整合 用热点公司网不行
  3. 柯洁获清华大学免试入学推荐资格
  4. 容器编排技术 -- Kubernetes kubectl autoscale 命令详解
  5. Android应用开发提高篇(4)-----Socket编程(多线程、双向通信)
  6. 性能提升 3 倍的树莓派 4,被爆设计缺陷!
  7. 调用codesoft,打印条码,批量连续打印,变量打印
  8. Atitit  信息管理 艾提拉著 CAPT2 数据存储与分类 聚集.docx 目录 1. 按照存储位置 1 1.1. 网盘 1 1.2. 存储在eml imap中 方便检索 1 1.3. 分散与
  9. python snap7怎么用_Python-snap7与S7-1500的通讯
  10. 《大师谈游戏设计——创意与节奏》【笔记一】
  11. 计算机网络与通信之计算机网络体系结构
  12. vmware安装了vmware tools还是无法复制文件与文本(ubuntu16.04)
  13. xmlDocument是什么?(转)
  14. 搜狗输入法原先能在word中输入中文,现在不行。
  15. ps人像磨皮皮肤处理教程
  16. 基于C的VAD实现一
  17. linux shell sed快速开始-(添加文本到文件的第一行和最后一行、文本的行尾添加字符)
  18. Mr. Kitayuta vs. Bamboos[二分+贪心][图像分析]
  19. python中sklearn实现决策树及模型评估_sklearn实现决策树
  20. python归一化 增大差异_Python实现描述性统计

热门文章

  1. 聚沙成塔的分布式云存储
  2. 绫辻行人《杀人偶人馆》读后感
  3. Specificity and sensitivity
  4. httpwatch使用,浏览器内HTTP嗅探器
  5. Linux系统下如何挂载NTFS格式U盘
  6. Linux救援(rescue)模式知识点
  7. maya中实时置换效果 dx11shader
  8. 两个月面试30+公司,我得到了这些经验教训
  9. 订餐小项目-(适合公司内部使用)
  10. MySQL查询不同年份母亲节_日期习俗大不同 走近七个国家的母亲节