【NodeJs】Ctrl+C在Linux平台和Windows平台下的TCP连接中的不同表现
Linux平台:CentOS release 6.5 (Final)
Windows平台:Windows 7 旗舰版
服务器端代码如下:
var net = require('net');
var server = net.createServer(function(c){
console.log('client connected: ' + c.remoteAddress);
c.setNoDelay(true);
c.on('data', function(data){
console.log(data);
});
c.on('end', function(){
console.log('disconnected from client');
});
c.on('error', function(err){
console.log(err);
});
});
server.listen({port:}, function(){
console.log('server bound');
});
客户端代码如下:
const net = require('net');
const client = net.connect({port: 6200, localPort:6201}, function(){
//'connect' listener
console.log('connected to server!');
client.setNoDelay(true);
for (var i=0; i<1000; i++) {
var now = Date.now();
while (Date.now() < now + 3000) {}
client.write('中国人');
}
}); client.on('data', (data)=>{
console.log(data.toString());
}); client.on('end', ()=>{
console.log('disconnected from server');
});
在Linux上运行server.js,然后分别在Linux上和Winows上执行client.js,并在执行过程中按下Ctrl+C终止进程,我发现服务器端做出的反应是不一样的。当在Linux上终止客户端时,服务器端会输出“disconnected from client”;而在Window上终止客户端时,服务器端会输出“{ [Error: read ECONNRESET] code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' }”(若注释掉服务器端对error事件的监听,则服务器端就会抛出异常并退出)。为什么会这样呢?我用tcpdump工具监听了一下服务器端的6200端口,发现了原因。
//在按下Ctrl+C键时,Linux上的客户端向服务器发送了带FIN标记的报文
16:53:59.948186 IP localhost.6201 > localhost.lm-x: Flags [F.], seq 10, ack 1, win 257, options [nop,nop,TS val 1250056051 ecr 1250053568], length 0
//在按下Ctrl+C键时,在Windows上的“客户端”向服务器发送了带RST标记的报文
16:55:14.681005 IP localhost.6201 > localhost.lm-x: Flags [R.], seq 6007, ack 1, win 0, length 0
注:
1.复位比特(RST):当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接。
【NodeJs】Ctrl+C在Linux平台和Windows平台下的TCP连接中的不同表现的更多相关文章
- Linux 平台和 Windows平台下 Unicode与UTF-8互转
Windows: unsigned char * make_utf8_string(const wchar_t *unicode) { , index = , out_index = ; unsign ...
- Mac平台与Windows平台下AndroidStudio增量升级
Android Studio增量升级什么情况下使用最合适呢? 比如现在的as版本是2.2版本,而你的as版本2.0版本,这个时候点Check For Updates就没有反应了,因为你已经2个有版本没 ...
- Windows平台下的node.js安装
Windows平台下的node.js安装 直接去nodejs的官网http://nodejs.org/上下载nodejs安装程序,双击安装就可以了 测试安装是否成功: 在命令行输入 node –v 应 ...
- windows平台下nginx+PHP环境安装
因为日常工作在windows下,为方便在window是下进行PHP开发,需要在windows平台下搭建PHP开发环境,web服务器选择nginx,不过windows版本的nginx性能要比Linux/ ...
- 利用zabbix监控ogg进程(Windows平台下)
本文给大家介绍如何监控windows平台下的ogg程序.(注:所有操作都在administrator用户下面进行操作) 监控linux平台下的ogg程序请看:https://www.cnblogs.c ...
- [转]Windows平台下Makefile学习笔记
Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...
- Windows平台下Git服务器搭建
第一步:下载Java,下载地址:http://www.java.com/zh_CN/ 第二步:安装Java.安装步骤不再详述. 第三步:配置Java环境变量. 右键”计算机” => ”属性” = ...
- windows平台下VLC2.0.5编译
windows平台下VLC2.0.5编译说明 时隔一年多,又要搞流媒体了,不过这次是要做流媒体服务器. 暂时决定使用vlc+ffmpeg+live555,虽然听有些前辈说这个组合的性能较差,只能作为学 ...
- 【转】Windows平台下Git服务器搭建
Windows平台下Git服务器搭建 Posted on 2015-05-18 21:29 阿祥当码农 阅读(7637) 评论(0) 编辑 收藏 该文章转自:http://www.codeceo.co ...
随机推荐
- Serv-u FTP服务器
它可以让我们通过http协议(web端)或者通过其他软件进行连接,从而可以操作服务器上的文件数据.
- eclipse+maven搭建cxf webservice 完整例子
开发环境是eclipse , maven. 在开发java webservice时,有两个比较流行的框架:axis2和cxf.cxf可以无缝的和spring集成,而axis2需要打包成aar文件,在t ...
- [wikioi]关押罪犯
错误半天还是因为并查集写错了.写错的地方是合并X和Y的时候,应该把FX挂到FY上去,而不是把X挂到Y上或FY上去,因为FX和FY下面有一树别的节点. http://www.nocow.cn/index ...
- Android Training精要(五)讀取Bitmap對象實際的尺寸和類型
讀取Bitmap對象實際的尺寸和類型 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecode ...
- [Java]重载,重写以及继承,多态的区别
转自:http://android.blog.51cto.com/268543/53181 什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承. ...
- 数学:lucas定理的总结
今天考试的题目中有大组合数取模,不会唉,丢了45分,我真是个弱鸡,现在还不会lucas. 所以今天看了一下,定理差不多是: (1)Lucas定理:p为素数,则有: 即:lucas(n,m,p)=c(n ...
- HDU 5936 Difference 【中途相遇法】(2016年中国大学生程序设计竞赛(杭州))
Difference Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- 机器更换登录密码重启,然后SQL Server登录不了
解决方法:
- selenium webdriver(5)---超时设置
自动化测试中,等待时间的运用占据了举足轻重的地位,平常我们需要处理很多和时间息息相关的场景,例如: 打开新页面,只要特定元素出现而不用等待页面全部加载完成就对其进行操作 设置等待某元素出现的时间,超时 ...
- Web---Cookie技术(显示用户上次登录的时间、显示用户最近浏览的若干个图片(按比例缩放))
本章博客讲解: 1.Cookie基本用法演示 2.演示Cookie的访问权限 3.演示Cookie的删除 4.利用Cookie显示用户上次登录的时间 5.利用Cookie技术显示用户最近浏览的若干个图 ...