這裏是我的回聲服務器代碼爲什麼我的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