1

我正在尝试在端口上侦听 TCP 数据包,然后从中获取数据并将其转发到 UDP 端口。原因是在 UDP 端口上侦听的软件只接受 UDP,但我想使用 javascript websockets 向它发送仅使用 TCP 的数据。

4

2 回答 2

1

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();
    });
  });
});

显然用所需的目标端口和主机替换41234and 。localhost

于 2012-10-31T02:30:11.583 回答
1

没有“TCP 数据包”之类的东西,因此无法接收。TCP 呈现一个字节流。您的 UDP 接收器所期望的数据报是否与您在 TCP 流上接收到的数据相对应,只有您自己知道,但您需要意识到这是非常有问题的。

于 2012-10-31T09:48:31.027 回答