Tag: netcat

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', […]

netcat不发送最终的FIN来closures连接

我正在玩自制的nodejs tcp服务器,并在Linux下testingnetcat的行为。 在build立连接时,服务器发送“Test”string并closures套接字。 我期望netcat通过发送适当的tcp数据包来closures它的连接,但是它不会! 这是我做的: nc -v localhost 9000 之后,整个谈话看起来像这样: netcat –> server (SYN) netcat <– server (SYN, ACK) netcat –> server (ACK) netcat <– server (PSH, ACK) netcat –> server (ACK) netcat <– server (FIN, ACK) netcat –> server (ACK) 在这一点上,我期望netcat发送FIN,但它永远不会。 连接挂在FIN-WAIT-2的一边,CLOSE-WAIT挂在另一边。 如果我用telnet尝试同样的事情: telnet localhost 9000 它的行为如预期,并收到“testing”string后终止连接。 问题是为什么netcat的行为不同?