我有以下设置:
服务器将通过蓝牙连接到发送离散信号的多个设备。然后会有 n 个客户端可以查询服务器(可能通过 Web 服务)连接了哪些设备并收听来自他们想要的设备的信号。
我认为最好的实现方式是:当服务器通过 BT 连接到设备时,它会打开一个 Socket 到本地端口并将数据发送到那里。当客户端请求可用设备时,服务器将返回一个字典,然后客户端只需要监听该端口。
但是我在套接字实现方面遇到了一些问题。如何创建信号并将其写入本地端口?
这是我到目前为止得到的:
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 调用在数据报套接字上发送时)未提供地址
这是正确的方法,但需要有人连接到套接字才能读取数据?