这里是我的回声服务器代码为什么我的nodejs代码中的第一个和第二个套接字请求有区别?
var net = require('net')
var server = net.createServer(function(socket) {
socket.write('Echo server\r\n');
socket.on('data', function(data) {
console.log('recv data: ' + data);
socket.write(data + ' random data');
});
socket.on('end', socket.end);
});
server.listen(1337, '127.0.0.1');
这是测试代码
var net = require('net');
var client = new net.Socket();
client.connect(1337, '127.0.0.1', function() {
console.log('Connected');
client.write('Hello, server! Love, Client.');
});
client.on('data', function(data) {
console.log('Received: ' + data);
client.destroy();
});
client.on('close', function() {
console.log('Connection closed');
});
当我第一次运行客户端服务器启动后,终端显示:
➜ test node client.js
Connected
Received: Echo server
Connection closed
我可以看到服务器已经通过wireshark将数据发送到客户端,但客户端在此数据包之后立即向服务器发送RST数据包。
第二个是正常
➜ test node client.js
Connected
Received: Echo server
Hello, server! Love, Client. random data
Connection closed
FWIW'socket.on('end',socket.end);'是不必要的。 – mscdex