【发布时间】:2016-02-10 14:52:18
【问题描述】:
我正在尝试将数据从我的笔记本电脑发送到在端口 30718 上通信的 UDP 服务器。数据发送是正确的,但是当我想接收响应时,程序卡在 UdpClient.receive() 方法上。我试图用wireshark嗅探网络,似乎响应正确传递,但c#不会收到它。 这是我的代码:
private void button1_Click(object sender, EventArgs e)
{
byte[] data = new byte[4];
data[0] = 0x00;
data[1] = 0x01;
data[2] = 0x00;
data[3] = 0xF6;
byte[] rcvPacket = new Byte[1024];
UdpClient client = new UdpClient();
IPAddress address = IPAddress.Parse("255.255.255.255");
client.EnableBroadcast = true;
client.Connect(address, 30718);
IPEndPoint remoteIPEndPoint = new IPEndPoint(IPAddress.Any, 0);
client.Send(data, 4);
rcvPacket = client.Receive(ref remoteIPEndPoint);
string rcvData = Encoding.ASCII.GetString(rcvPacket);
client.Close(); //close connection
}
这是wireshark的输出(第二张图是对广播请求的响应):
有人有解决这个问题的方法吗? 谢谢。
【问题讨论】:
-
如果您先检查搜索引擎,它可能与此帖子重复:stackoverflow.com/questions/24363729/…
-
你不需要打电话给
Connect,这里有一个关于如何通过UDP广播的快速示例,github.com/lextm/sharpsnmplib/blob/master/SharpSnmpLib/…