Tag: tcp

处理node.js中的字节stream

为了教育目的,我使用TCP创build了一个和node.js聊天的小程序。 我正在使用Windows控制台来连接我的节点服务器,但是当我打字时,所有的字符都被一一传送。 他们不像弦乐一样。 我怎样才能设法处理这些stream,所以我的用户不能写完整的单词。 我的代码: var net = require("net"); Array.prototype.remove = function(e) { for (var i = 0; i < this.length; i++) { if (e == this[i]) { return this.splice(i, 1); } } }; function Chatter(stream) { this.name = null; this.stream = stream; } var chatters = []; var server = net.createServer(function(stream) { var chatter […]

TCP保持双向?

我正在iPhone应用程序和NodeJS服务器之间使用tcp套接字连接来实时传输数据。 当客户端连接到服务器时,我启用套接字上的“保持活动”,以防止“静音”断开不活动。 从服务器到客户端是否保持活跃的“ping”? tcp连接的客户端是否有任何固有的智能来检测ping是否停止到达?

Node.js TCP客户端的行为与Netcat / Telnet不同

我正在发送换行符分隔的文本命令到自定义协议TCP服务器。 在下面的例子中,我发出2个命令,并收到写回的回复。 它在telnet和netcat中按预期工作: $ nc localhost 1234 command1 command2 theresponse 与Node.js连接时,相同的工作stream程不起作用: var net = require('net'); var client = net.connect(1234, 'localhost'); client.on('data', function(data) { console.log('data:', data.toString()); }); client.on('error', function(err) { console.log('error:', err.message); }); client.write('command1\n'); client.write('command2\n'); 我希望在运行这个程序后,我会看到写入到控制台的“data:theresponse”,但是没有任何东西会被打印出来。 我也尝试执行“连接”callback里面的写入,但我有相同的结果。 奇怪的是,当我在Node REPL中尝试这个function时,它可以工作: $ node > var net = require('net') undefined > var client = net.connect(1234, 'localhost') undefined > client.on('data', […]

确定是否socket.io TCP或HTTP

这是我的节点服务器 var io = require('socket.io').listen(8889); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 我正尝试从socket.io.js的帮助下从客户端连接到这个节点服务器 我没有任何连接问题 我的要求是我想创build一个客户端可以连接的TCP连接 但是我怎么知道并确认服务器是TCPtypes还是HTTPtypes

断开连接后访问套接字对象

以下是一个简单的Node.js tcp服务器。 var net = require('net'); var conn = []; var server = net.createServer(function(client) {//'connection' listener var i = conn.push(client) – 1; //console.log('[conn',i,']', client.remoteAddress, ':', client.remotePort); console.log('[disc]', conn[i].remoteAddress, ':', conn[i].remotePort); client.on('end', function() { console.log('[disc]', conn[i].remoteAddress, ':', conn[i].remotePort); }); client.on('data', function(msg) { console.log('[data]', msg.toString()); }) client.write('hello\r\n'); //client.pipe(client); }); server.listen(8080); 当客户端连接,发送或断开时,它将打印有关客户端的信息。 但是,只有客户端断开连接时,才会打印undefined的套接字信息。 例: [conn] 127.0.0.1 : 52711 […]

如何在Node.js TCP服务器中追踪ECONNREFUSED?

我用dnode写了一个TCP服务器。 基本上,一切工作正常。 现在我也创build了一些unit testing,其中一个失败了ECONNREFUSED 。 奇怪的是这个 被testing的代码在unit testing之外运行,在应用程序内部工作, 如果我在失败的testing之前注释掉testing,那么正在testing的代码是有效的。 所以显然两个testing之间似乎存在相互依赖关系。 两者都单独工作,但不能彼此合作。 问题是我得到一个相当无用的错误信息: Error: connect ECONNREFUSED at errnoException (net.js:768:11) at Object.afterConnect [as oncomplete] (net.js:759:19) 很高兴看到这是一个ECONNREFUSED错误,但我怎么知道是什么原因造成的问题? 由于有很多callback函数都包含匿名函数,所以找出导致问题的线并不是那么容易。 任何想法/提示?

连接到Node js TCP服务器后,客户端立即断开连接

这是我第一次使用节点js。 我试图让客户端连接到服务器,并保持连接而不closures。 这些都是在虚拟机中托pipe的Ubuntu服务器版本中托pipe的。 我已经使用netstat -ant检查了服务器实际上是在监听端口5000 Websockets也可以在我的浏览器上使用。 我得到以下输出错误 Echo server dot come 192.168.1.107 node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: EPIPE, Broken pipe at Socket._writeImpl (net.js:159:14) at Socket._writeOut (net.js:450:25) at Socket.write (net.js:377:17) at Socket.ondata (stream.js:36:26) at Socket.emit (events.js:81:20) at Socket._onReadable (net.js:678:14) at IOWatcher.onReadable [as callback] (net.js:177:10) 如果我在连接事件处理程序的服务器上调用socket.end()我得到一个断开连接的客户端。 我的问题是如何build立一个稳定的连接使用这个代码,我有什么改变或者我在这里做错了? 拉我的头发 […]

Node.js中的TCP套接字和文件操作

我是Node.js的新手,我有两个问题: 你可以在服务器端创build常规的TCP套接字吗? 是否可以读取/写入服务器端的文件? 就这样。 这两个对于将我的程序放到networking上都是至关重要的。

NodeJs TCP客户端bufferSize调用多个`data`事件?

我只注意到在NodeJs TCP Client中有一个bufferSize ,你可以限制传入的缓冲区到TCP客户端。 所以我的问题是,如果我将客户端的bufferSize设置为1个字节,并从服务器发送16个字节,我应该得到16个不同的data事件在客户端?

Node.js套接字pipe道方法不会pipe最后一个数据包到http响应

我有使用Express作为networking应用程序的节点服务器。 此服务器与另一端TCP服务器创build一个tcp套接字连接。 我正在尝试将tcp数据传递给用户http响应。 它工作正常,但最后的tcp数据包没有pipe道http响应。 所以,下载的网页浏览器下载状态为99.9%。 我的源代码如下。 任何人都可以帮我解决这个问题? 提前致谢。 app.get('/download/*', function(req, res){ var tcpClient = new net.Socket(); tcpClient.connect(port, ip, function() { // some logic }); tcpClient.on('data', function(data) { /* skip … */ tcpClient.pipe(res); // This method is called once in the 'data' event loop /* skip … */ }); tcpClient.on('close', function() { clog.debug('Connection closed.'); }); tcpClient.on('end', […]