私は次の設定をしています:
サーバーは、Bluetoothを介して、個別の信号を送信している複数のデバイスに接続します。次に、デバイスが接続されているサーバーに(おそらくWebサービスを介して)照会し、必要なデバイスからの信号をリッスンできるn個のクライアントが存在します。
これを実装する最良の方法は、サーバーがBTを介してデバイスに接続するときに、ローカルポートへのソケットを開き、そこにデータを送信することだと思います。クライアントが利用可能なデバイスを要求すると、サーバーは辞書を返し、クライアントはそのポートをリッスンする必要があります。
しかし、ソケットの実装に問題があります。信号を作成してローカルポートに書き込むにはどうすればよいですか?
これは私がこれまでに得たものです:
class Device {
...
public EndPoint Connect() {
// create a bt connection to the device
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
var endPoint = new IPEndPoint(IPAddress.Parse(_localIp), 0);
_socket.Bind(endPoint);
return endPoint;
}
private void OnBtDataReceived(object sender, wclDataEventArgs e) {
_socket.Send(e.Data);
}
}
しかし、_socket.Send(e.Data);に到達すると 次の例外が発生します。
ソケットが接続されておらず、(sendto呼び出しを使用してデータグラムソケットで送信する場合)アドレスが指定されていないため、データの送受信要求は許可されませんでした
これは正しいアプローチですが、データを読み取るために誰かをソケットに接続する必要がありますか?