Articles of tcp

nodejs tcp socket发送多个数据事件

我试图通过用tcp包编码来演示http服务器如何工作的最简单的方法。 我之前做了几次,但今天我面临一个意想不到的行为,因为来自套接字对象的data事件被随机触发一个或多个类似的请求,我想知道为什么,以及如何正确地解决它。 请注意,我知道我应该使用stream数据处理方式,这是我在第二次演示中所做的。 每一次都会增加复杂性,使演示文稿更容易​​遵循。 这是服务器。 正如你所看到的,它很简单,容易得到。 const net = require('net') const response = `HTTP/1.1 200 OK Access-Control-Allow-Origin: * Foo: Bar foobar ` net.createServer(socket => { socket.on('data', buffer => { console.log('—– socket data', Date.now()) console.log(buffer.toString()) socket.write(response) socket.end() console.log('—–') }) socket.on('end', () => console.log('—– socket end.')) socket.on('close', () => console.log('—– socket close.', '\n')) }).listen(2000) 为了testing我的服务器,我只要打开任何Web浏览器到http://localhost:2000并获得响应; 但是当使用下面的有效负载(使用浏览器的JavaScript控制台)时, 有时候数据事件会被触发两次,最终导致一个错误,因为write/end进程不能再次进行。 […]

Node.js OSC模块发送TCP

我正在使用OSC模块https://github.com/colinbdclark/osc.js,但我正在努力使其通过TCP工作。 我无法find任何使用TCP的例子,它们都是基于UDP的。 我曾尝试在node.js中创build一个TCP客户端,但仍然很难将正确编码的消息转换为OSC格式。 我也相信它也必须用SLIP编码? 我很新,所以要温柔。 如果有人能指点我正确的方向,或者提供一个关于通过node.js中的TCP发送OSC消息的例子,那将是惊人的 谢谢! Wayde PS。 很高兴使用osc-min模块。 据我所知,你可以编码消息到osc消息并存储在一个变种。 但仍然无法让它通过TCP工作..工作正常UDP,但我的答复是大于UDP可以处理,如果这是有道理的

一台机器上有两个(或多个)套接字客户端连接

我有一个简单的node.js客户端和服务器程序运行在一台机器上,当我尝试与客户端程序的第二个实例同时连接到服务器时,我得到EADDRINUSE, Address already in use错误。 是否可以在同一台机器上有两个或多个基于TCP的套接字客户机连接(使用createConnection创build)到一个服务器(使用createServer创build),或者只有一个客户机程序可以同时连接到服务器?

客户端端tcp与node.js / socket.io?

我是新来的node.js / socket.io所以我不知道我在做什么,但我已经得到了我的服务器端: var app = require('net') , fs = require('fs') var server = app.createServer(function (socket) { socket.write("Echo server\r\n"); socket.pipe(socket); socket.on('data', function(data) { console.log(data); }); }); var io = require('socket.io').listen(server) server.listen(81); 所以当我使用nc本地主机81并发送数据时,tcp服务器工作。 但是,我不知道如何使用脚本标记来连接和发送数据到服务器端的网站上的tcp服务器。 那么客户端会连接到这个tcp服务器并将数据发送给它? 谢谢! 新增代码: 服务器: var app = require('net') , fs = require('fs') var sockets_list = []; var server = app.createServer(function (socket) { […]

Python的TCP套接字客户端

我需要有一个TCP套接字客户端连接到服务器发送数据和接收。 但是,这个套接字必须一直打开,我不能打开另一个套接字。 我总是有一些数据要发送,然后处理以前发送的数据的答案。 如果我可以打开多个套接字,我认为它更容易。 但在我的情况下,我必须发送一切在同一个套接字asynchronous。 所以问题是,你推荐在Python生态系统中使用什么? (扭曲,龙卷风等)我应该考虑Node.js或另一种select?

用mochatesting节点tcp服务器

我有一个我想用摩卡testing的tcp服务器: // Start the server require('net').createServer(function (socket) { // Handle incoming data socket.on('data', function (data) { … some stuff socket.write("reply with some err message if any"); }); }); 我通常使用expressjs为HTTP Rest API开发节点应用程序,并使用grunt-express-server模块,例如: grunt.registerTask('validate', [ 'express:dev', 'mochaTest', 'express:dev:stop' ]); 这个运行快速服务器,运行testing并停止快速服务器。 有没有相同的东西来testingTCP服务器?

写入后Node.js刷新套接字

我正在Node中实现一个tcp协议。 完整来源: https://github.com/roelandmoors/ads.js/blob/master/ads.js 眼镜: http://infosys.beckhoff.com/content/1033/tcadsamsspec/html/tcadsamsspec_amstcppackage.htm?id=17754 问题是我用这个来发送一个包: this.tcpClient.write(buf); 如果我发送多个命令,那么多个命令合并成一个单独的tcp数据包。 这不起作用。 关于这个问题还有更多的问题,但是他们build议使用一个分隔符。 但是因为我不能改变协议,所以这不是一个选项。 没有一个简单的解决scheme来刷新套接字? socket.setNoDelay()没有帮助。 编辑:我也尝试使用排水事件发送下一个写,但事件永远不会被调用? 更新: 这似乎解决了这个问题,但是非常糟糕,而且现在如果它总是有效的话。 而不是直接写入我写入缓冲区: this.writeFILO.push(buf); 每个周期(?)我正在写封装到套接字stream: var sendCycle = function(ads) { if (ads.writeFILO.length > 0) { ads.tcpClient.write(ads.writeFILO.shift()); } setTimeout(function() { sendCycle(ads); }, 0); }

使用TCP进行跨进程的内存共享

我一开始就没有使用Redis或Memcache或其他内存存储系统,因此在nodejs上犯了一个错误。 现在,重写所有的东西来调整和关联这些API中的代码已经太迟了。 不过,我最近刚刚发现了分叉过程,以及它们有多大的益处。 特别是因为我正在做一个游戏服务器。 我nodejs的问题是: 内存不在nodejs内核之间共享 ..直到我find一个名为Amensia的TCP内存共享模块。 nodejs ,我对于nodejs和tcp有一些疑问: 1) TCP数据包的最大大小约为64K,所以使用这个模块时我只能共享64K的数据? 2)我使用全局的GAMES和users对象来存储玩家数据。 当玩家在地图上移动(x,y位置)和其他动作时,这些对象被更新。 通过TCP发送所有这些数据是否会导致瓶颈?

是一个TCP套接字安全或应该我总是检查用户

我有一个C ++应用程序,通过TCP套接字连接到nodeJS服务器。 在套接字“握手”中,客户端使用服务器已知的UUID进行身份validation,然后服务器将该帐户关联到此识别的UUID 一旦TCP套接字打开,应用程序发送请求,服务器通过相同的套接字回答。 是否有必要为每个请求添encryption码以确保请求来自客户端? 或者是一个sockets应该到位并保持原位? 所以我应该确定客户是客户: 只有打开sockets? 每次提出请求?

如何在Nodejs中一次性通过TCP发送文件

我想通过tcp / ip发送文件,我使用的Nodejs的文件大小小于65536字节。 你设置buffersize? 是的,我愿意。 我尝试发送233565字节的图片,但看起来像nodejs分离我的文件发送多次。 这是我的示例代码 Server.js const net = require('net'); net.bytesWritten = 300000; net.bufferSize = 300000; const fs = require('fs'); const server = net.createServer((c) => { // 'connection' listener console.log('client connected'); c.on('end', () => { console.log('client disconnected'); }); // c.write('hello\r\n'); fs.readFile('daemon0.png' , (err, data) =>{ if(!err){ console.log(data.length); c.write(data); } else { console.log('readfile daemon0 […]