【发布时间】:2012-10-20 11:08:56
【问题描述】:
我正在尝试在端口上侦听 TCP 数据包,然后从中获取数据并将其转发到 UDP 端口。原因是在 UDP 端口上侦听的软件只接受 UDP,但我想使用 javascript websockets 向它发送仅使用 TCP 的数据。
【问题讨论】:
标签: javascript node.js tcp proxy udp
我正在尝试在端口上侦听 TCP 数据包,然后从中获取数据并将其转发到 UDP 端口。原因是在 UDP 端口上侦听的软件只接受 UDP,但我想使用 javascript websockets 向它发送仅使用 TCP 的数据。
【问题讨论】:
标签: javascript node.js tcp proxy udp
WebSockets 不仅仅是一个简单的 TCP 套接字。该协议基本上是一个 HTTP 升级握手(包含一些 WebSockets 特定的安全握手)。
如果你只是监听一个端口并盲目转发数据,它是行不通的,因为浏览器实际上无法建立 WebSocket 连接。
您是否考虑过使用socket.io 来处理WebSocket 端的事情?
那么很简单,只需使用dgram通过UDP发送数据:
io.sockets.on('connection', function (socket) {
socket.on('sendudp', function (data) {
var buf = new Buffer(data), udp = dgram.createSocket("udp4");
udp.send(buf, 0, buf.length, 41234, "localhost", function(err, bytes) {
udp.close();
});
});
});
显然将41234 和localhost 替换为所需的目标端口和主机。
【讨论】:
没有“TCP 数据包”之类的东西,因此无法接收。 TCP 呈现一个字节流。您的 UDP 接收器所期望的数据报是否与您在 TCP 流上接收到的数据相对应,只有您自己知道,但您需要知道这是非常有问题的。
【讨论】: