关于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:关闭连接的读和写}。
关于socket的关闭:close和shutdown的更多相关文章
- Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)
		
声明:该博文以socket中,关闭输出流为例进行说明. 为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutpu ...
 - 网络编程Socket之TCP之close/shutdown具体解释(续)
		
接着上一篇网络编程Socket之TCP之close/shutdown具体解释 如今我们看看对于不同情况的close的返回情况和可能遇到的一些问题: 1.默认操作的close 说明:我们已经知道writ ...
 - 如何判断Socket已经关闭
		
引子 前段时间我们的服务由于一台交换机网络出现故障,导致数据库连接不上,但是在数据库的连接超时参数设置不合理,connect timeout设置的过长,导致接口耗时增加.DB连接超时后线程未正常结束, ...
 - 关闭钩子(shutdown hook)的作用以及在Tomcat中的使用
		
在很多实际应用环境中,当用户关了应用程序时,需要做一些善后清理工作,但问题是,用户有时并不会按照推荐的方法关闭应用程序,很有可能不做清理工作,例如在Tomcat的部署应用中,通过实例化一个Server ...
 - Android—Socket中关闭IO流后导致Socket关闭不能再收发数据的解决办法
		
以Socket发送数据为例: 发送数据时候要声明:DataOutputStream os = new DataOutputStream(socket.getOutputStream()); 最近开发遇 ...
 - Linux下tomcat的启动,关闭,以及shutdown失败杀死进程的方法
		
1.tomcat服务器第一次启动并查看启动日志的命令 在 ../bin 文件夹下输入./startup.sh;tail -f ../logs/catalina.out 2.需要重启服务器的时候 在 . ...
 - java socket - 半关闭
		
通常,使用关闭输出流来表示输出已经结束.但在进行网络通信时则不能这样做.因为我们关闭输出流时,该输出流对应的Socket也将随之关闭,这样程序将无法再从该socket中读取数据. 为了应付这种情况,s ...
 - 关闭数据库时SHUTDOWN: waiting for active calls to complete.处理
		
有时候在关闭数据库时,发出shutdown immediate;命令后一直未关闭.查看ALERT日志.在等待一段时间后日志中有提示: SHUTDOWN: waiting for active call ...
 - 65 TCP连接中,流的关闭会造成Socket的关闭
		
转自:https://blog.csdn.net/u012525096/article/details/76924627 今天写安卓向服务器发送图片,过程为:客户端发送数据->服务器接收.处理数 ...
 
随机推荐
- multi-threaded copy command - robocopy
			
we can copy files by the powerful robocopy tool, and it allow copy using muliti-threaded as well. As ...
 - IOS 表视图(UITableVIew)的使用方法(3)名单的索引显示
			
当数据量特别大时,简单地以role进行分段,对实际查找的效率提升并不大.就像上一节开头所说,开发者可以根据球员名字的首字母进行分段,且分成26段.由于段数较多,可以使用UITableView的索引机制 ...
 - tomcat 会话超时设置
			
1.为单个WEB设置SESSION 在WEB.XML中添加 xml 代码 <session-config> <session-timeout>15</session-ti ...
 - Libev学习笔记1
			
和Libevent相似,Libev是一个高性事件驱动框架,据说性能比Libevent要高,bug比Libevent要少.Libev只是一个事件驱动框架,不是网络库,因为它的内部并没有任何socket编 ...
 - poj 3356 AGTC(线性dp)
			
题目链接:http://poj.org/problem?id=3356 思路分析:题目为经典的编辑距离问题,其实质为动态规划问题: 编辑距离问题定义:给定一个字符串source,可以对其进行复制,替换 ...
 - debian安装vld来查看Opcode,PHP调优。
			
一: 我的环境: Debian 7 (wheezy) x64 PHP 5.4.4-14 (apt-get 而来) Apache/2.2.22 (同上,非源码编译) 二 :安装vld. (# 代表是r ...
 - Android的电源管理框架
			
Android的电源管理框架 Android通过锁和定时器来切换系统的状态,使系统的功耗降至最低,整个系统的电源管理框架分成五个部分:应用层,framework层,JNI层,HAL层和内核层.电源管理 ...
 - 使用autoCompleteTextView以及MultiAutoCompleteTextView实现自动匹配输入内容
			
一:autoCompleteTextView 1:控件属性设置: 注意添加:android:completionThreshold="1"来设置输入几个字符的时候开始显示匹配的内容 ...
 - jquery事件链式写法
			
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
 - linux安装LNMP的资源
			
wget http://nginx.org/download/nginx-0.7.69.tar.gz wget http://museum.php.net/php5/php-5.2.10.tar.gz ...