如何侦听TCP数据包获取数据并使用node.js发送UDP

时间:2012-10-31 02:20:52

标签: javascript node.js tcp proxy udp

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

2 个答案:

答案 0 :(得分: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();
    });
  });
});

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

答案 1 :(得分:1)

没有“TCP数据包”这样的东西,因此无法接收一个。 TCP呈现字节流。无论您的UDP接收器所期望的数据报是否与您在TCP流上接收的数据报相对应,您都可以知道,但您需要注意它是非常有问题的。