我正在尝试在端口上侦听TCP数据包,然后从中获取数据并将其转发到UDP端口。原因是在UDP端口上监听的软件只接受UDP,但我想使用javascript websockets向其发送仅使用TCP的数据。
答案 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();
});
});
});
显然将41234
和localhost
替换为所需的目标端口和主机。
答案 1 :(得分:1)
没有“TCP数据包”这样的东西,因此无法接收一个。 TCP呈现字节流。无论您的UDP接收器所期望的数据报是否与您在TCP流上接收的数据报相对应,您都可以知道,但您需要注意它是非常有问题的。