当前位置:网站首页 / Node.js / 正文

[AY-Node.js]写给自己的NodeJs-通讯系统-tcp服务端【二】[15]

时间:2015年10月26日 | 作者 : aaronyang | 分类 : Node.js | 浏览: 2224次 | 评论 0

Socket对象

新建t2.js

blob.png

然后右键引入提示

blob.png

第一个也选上

/**
 * Created by aaronyang on 2015/10/26.
 */
var net=require('net');
var server=net.createServer();
server.on('connection', function (socket) {
    address=socket.address();
    console.log('端口地址:', address);
})
server.listen(8889,'localhost');

blob.png

接收数据

使用socket对象的data事件

/**
 * Created by aaronyang on 2015/10/26.
 */
var net=require('net');
var server=net.createServer();
server.on('connection', function (socket) {
    address=socket.address();
    console.log('端口地址:', address);

    socket.setEncoding('utf-8');
    socket.on('data', function (data) {
        console.log(data);
    })

})
server.listen(8889,'localhost');

312.gif

发送a b c d e f g数据测试


2015-10-26 ============ AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢===============


除了setEncoding,还可以toString一下data对象,我们使用bytesRead获得接受的数据量,end事件结束socket连接后的处理

blob.png

使用socket的pipe方法将流文件写到文件或者其他目标对象中

使用Ctrl+/   来快速注释代码

var net=require('net');
var fs=require('fs');
var file=fs.createWriteStream('./data.txt');
var server=net.createServer();
server.on('connection', function (socket) {
     socket.pipe(file);

})
server.listen(8889,'localhost');

3123.gif

结束事件,pipe,end=false

312222.gif

unpipe取消写入操作,pause方法暂停写入,resume继续写入

我们可以对客户端连接设置一个超时时间,可以使用socket端口的setTimeout方法设置,如果客户端超过该超时事件仍未发送数据,表明客户端空闲,这时候可以读取缓存区中的数据

var net=require('net');
var fs=require('fs');
var file=fs.createWriteStream('./data2.txt');
var server=net.createServer();
server.on('connection', function (socket) {
     address=socket.address();
    socket.setTimeout(5*1000);
    socket.pause();
    socket.on('timeout', function () {
        console.log('%j连接已经超时',address);
        socket.resume();
        socket.pipe(file);
    })
    socket.on('data', function (data) {
        socket.pause();
    })

})

server.listen(8889,'localhost');

socket的data,客户端发送数据,发送的时候,暂停写入,放入缓存区,一旦客户端5秒超时后,开始写入到文件去。

我们可以使用setTimeout(0),取消客户端的超时限制。


2015-10-26 ============ AYUI       www.ayjs.net      AY         杨洋原创编写,请不要转载谢谢===============

推荐您阅读更多有关于“nodejs,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

抖音号:wpfui,可以看到我的很多作品效果

AYUI8社区版Github地址:前往获取

作者:杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没公司AY唯一QQ:875556003和AY交流

高中学历,2015年1月17日开始,兴趣学习研究WPF,目前工作繁忙,不接任何活

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费.AY主要靠卖技术服务挣钱

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

兼容XP到win10,vs2015/2017/2019,最新AYUI:7.6.5.5

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表