ネットワークを使用してセンサーに接続しようとしていますが、センサーのIPは192.168.2.44
ポート3000;
マイコード:
byte[] byteReadStream = null; // holds the data in byte buffer
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("192.168.2.44"), 3000);//listen on all local addresses and 8888 port
TcpListener tcpl = new TcpListener(ipe);
while (true)
{
//infinite loop
tcpl.Start(); // block application until data and connection
TcpClient tcpc = tcpl.AcceptTcpClient();
byteReadStream = new byte[tcpc.Available]; //allocate space
tcpc.GetStream().Read(byteReadStream, 0, tcpc.Available);
Console.WriteLine(Encoding.Default.GetString(byteReadStream) + "\n");
}
しかし、このコードを実行すると、このエラーが発生しました:
要求されたアドレスは、そのコンテキストでは無効です
使用する IPAddress.Any
聞く。これがあなたの目標のようです:
//listen on all local addresses
指定したリスニングアドレスは、何らかの理由で無効です。数値アドレスを指定する必要はありません。
TcpListener
は、ローカルマシン上の特定のポート上のTCPネットワーククライアント)からの接続をリッスンしますつまり、着信接続の場合、コードは一種の「サーバー」として機能します。
要求されたアドレスは、そのコンテキストでは無効です
簡単に言うと、指定されたIPアドレスは、マシン上のどのネットワークインターフェイスでも使用されないことを意味します。
使用する IPAddress.Any
任意のIPアドレス(つまり、ネットワークインターフェイス)でリッスンします。
ただし、センサー(ポート3000上)に接続する必要があり、その逆ではない場合があります。
編集:新しい例外は、同じインターフェイス/ポートの組み合わせをリッスンしようとしている2つのアプリケーションがあることを示しています。 2つのインスタンスを同時に実行していますか?