2

私は多くのトラックに設置されるGPSデバイスを持っています。データステートメント「gpsdata、deviceid」をgprs経由でIPおよびポートに送信するようにデバイスを構成できます。TcpListenerサーバー側でデータを読み取るためにクラスを使用しています。

TcpListener server = null;
private void listen_data()
{
    Int32 port = controller_port;
    IPAddress localAddr = IPAddress.Parse(this_ip);
    server = new TcpListener(localAddr, port);
    server.Start();
    Byte[] bytes = new Byte[256];
    String data = null;
    while (true)
    {
        Console.Write("Waiting for a connection...-- ");
        TcpClient client = server.AcceptTcpClient();
        Console.Write("Connected!");
        data = null; int i;
        NetworkStream stream = client.GetStream();
        while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
        {
            data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
        }
    }
}

そのメソッドは、サーバーのIPとポートで何が起こっているかをリッスンしています。

  1. 同じポートでサーバーに送信するようにデバイスを構成したかどうかを知りたいのですが、すべてのデバイスをリッスンできますか、それとも最初に接続するデバイスが1つだけになりますか?

  2. この方法は、デバイスから受信データを読み取るための最良の方法ですか?

  3. デバイスごとに異なるポートを構成し、デバイスポートごとに新しいリッスンスレッドを作成する必要がありますか?

  4. 「応答を待っている間にリクエストチャネルがタイムアウトした」という例外に直面することがあります

よろしくお願いします。

4

2 に答える 2