2017-11-03 14 views
1

3Gネットワ​​ークで動作し、選択可能なポート上で自分のIPにデータを送信している接続オブジェクトがあります。3Gネットワ​​ーク上の接続されたオブジェクトからのTCP接続を聞きます

自分のサーバー上のすべての私のAPIは、私はこのような「ネット」サーバーを作成しようとしました。このためのNode.js

上にあるので、私はNode.jsのプログラムにこのオブジェクトから送信されたデータを読みたいです:

var net = require('net'); 

var server = net.createServer(function (socket) { 

    socket.on('data', function (data) { 

     var StrData = data.toString('ascii'); 
     fs.appendFile("test.txt","data received : "+ StrData, function (err) { 
      if (err) throw err; 
      console.log(StrData); 
     }); 
    }); 
}); 
server.listen(2000, '0.0.0.0'); 

オブジェクトから送信されたすべてのデータを「test.txt」ファイルに取得しています。問題は、接続が最初のデータを受信した後で私のサーバーによって閉じられているように見えるため、接続されたオブジェクトが毎回別の接続を作成して最初のデータを送信できるだけです。

私の質問は:

私は、接続はとてもオブジェクトは、すべてのデータを送信することができます開いてみましょうことができますどのように?

また、私は 'socket.io'と 'http'を試しましたが、私は自分が望むものを得ることができません。

答えて

0

それは与えられたコードの問題をデバッグするのは難しいです、あなたはソケットにエラーリスナーを追加し、エラーがトリガされているかどうかを確認しようとすることができます:

socket.on('error', (err) => { 
    console.log(err); 
} 

私の推測では、あなたのクライアントが閉じていますあなたが何らかの成功レスポンスを返していないので、リクエストがタイムアウトしていると思っています。 net.createServerは、すべての要求に対する応答を期待するTCPサーバーを作成します。

+0

私が何かに答えるときでさえ、それは動作しません:(実際にパケットを受け取った後に接続が自動的に閉じられたように見えます。実際にはこのポートに "nc" linuxコマンドを入力すると、他のサーバーがリスニングを続けているときのデータ – Aznhar

関連する問題