【发布时间】:2017-02-18 15:52:33
【问题描述】:
首先,对于术语的错误使用,我深表歉意。
我的本地网络上有一个传感器。它通过端口 35333 向网络上的每个人广播当前温度值。我想创建一个 C# 控制台程序,不断接收来自该传感器的数据包。
这是我当前的代码:
public static UdpClient Client = new UdpClient(35333);
private static async void Start()
{
Client.BeginReceive(new AsyncCallback(recv), null);
}
private static void recv(IAsyncResult res)
{
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
byte[] received = Client.EndReceive(res, ref RemoteIpEndPoint);
//Process codes
Client.BeginReceive(new AsyncCallback(recv), null);
}
上面的代码有效,但问题是:我一直收到相同的字节数组。
...
[114][51][57][48][48][77][72][112]
[114][51][57][48][48][77][72][112]
[114][51][57][48][48][77][72][112]
[114][51][57][48][48][77][72][112]
[114][51][57][48][48][77][72][112]
...
据我所知,再次原谅我糟糕的网络知识,我必须以某种方式将确认发送回此传感器,以便它开始向我发送“真实”数据。
欢迎任何提示或建议!
【问题讨论】:
-
UDP 是无会话广播。由于单个设备可能有多个 UDP 数据包接收者,因此不太可能出现 ACK。您应该查看设备协议文档,并查看是否有可用的示例代码。
标签: c# network-programming udp udpclient