gpt4 book ai didi

javascript - 带有 IO 的异步 Node.js 概念

转载 作者:行者123 更新时间:2023-12-03 11:18:08 25 4
gpt4 key购买 nike

var net = require ('net'),
local_port = 8000,
local_ip = '127.0.0.1',
remote_port = 80,
remote_ip = 'xxx.xx.xx.x',

server = net.createServer (function (socket){
var serviceSocket = new net.Socket ();
serviceSocket.connect (parseInt (remote_port), remote_ip, function () {
socket.on ('data', function (msg){
serviceSocket.write (msg);
});
});
}).listen (local_port, local_ip);

有一个 SERVER,它运行此代码,还有一个 CLIENT,它连接到 SERVER 并依次发送两个数据 block :D1,然后是 D2。

D2 总是会先于 D1 到达 remote_ip,这是真的吗?

这样的情况不可能吗:

假设客户端异步发送大小为 x 的 D1,然后发送大小为 y 的 D2,其中 y 远小于 x,则套接字不会 .on('data'...) 首先在其“data”监听器上接收 D2 时触发?

最佳答案

net.createServernet.Socket 都创建 TCP 套接字。

这有一些含义:

  1. 您先写入的数据将首先被接收。
  2. 边界固定,即一侧的单个写入可能会在接收侧拆分为多个数据事件,或者反之亦然,多个 write 调用可能会变成单个 data 事件。唯一的保证是数据将保持与您写入的顺序相同。

如果您对无序(且不可靠)的数据感兴趣,您可以查看 Node 的 dgram 模块 http://nodejs.org/api/dgram.html它创建 UDP 套接字,但在大多数情况下您需要 TCP。

关于javascript - 带有 IO 的异步 Node.js 概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27239540/

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