1

ポートで TCP パケットをリッスンし、そこからデータを取得して、それを UDP ポートに転送しようとしています。その理由は、UDP ポートでリッスンしているソフトウェアが UDP のみを受け入れるためですが、javascript websockets を使用して、TCP のみを使用するデータを送信したいと考えています。

4

2 に答える 2

1

WebSockets は単なる TCP ソケットではありません。プロトコルは基本的に HTTP アップグレード ハンドシェイクです (WebSocket 固有のセキュリティ ハンドシェイクが散りばめられています)。

ポートをリッスンして盲目的にデータを転送するだけでは、ブラウザーは実際には WebSocket 接続を確立できないため、機能しません。

WebSocket の終わりを処理するためにsocket.ioを使用することを検討しましたか?

次に、dgramUDP 経由でデータを送信するために使用するだけです。

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を目的の宛先ポートとホストに置き換えます。

于 2012-10-31T02:30:11.583 に答える
1

「TCP パケット」のようなものは存在しないため、受信する方法はありません。TCP はバイトストリームを提供します。UDP レシーバーが期待するデータグラムが、TCP ストリームで受信することによって得られるものと一致するかどうかは、あなただけが知ることができますが、非常に問題があることに注意する必要があります。

于 2012-10-31T09:48:31.027 に答える