gpt4 book ai didi

javascript - 为什么我的 nodejs 代码中的第一个和第二个套接字请求之间存在差异?

转载 作者:行者123 更新时间:2023-11-29 23:59:36 25 4
gpt4 key购买 nike

这是我的回显服务器代码

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

最佳答案

输出的差异只是由于竞争条件。有时服务器能够在套接字实际完全关闭之前(接收和)发送更多数据,有时则不能。

关于javascript - 为什么我的 nodejs 代码中的第一个和第二个套接字请求之间存在差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40923896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com