所请求的地址在其上下文中无效.SocketException

本文关键字:上下文 无效 SocketException 请求 地址 | 更新日期: 2023-09-27 17:49:14

我试图发送一个广播包(dest: FF.FF.FF.FF)到端口45624上的本地网络,除了在创建UdpClient时抛出异常。我已经尝试过其他地址,包括那些实际上不是子网掩码的地址,但它总是引发异常。对于除45624以外的端口,同上。

byte[] SearchAddr = new byte[] { 255, 255, 255, 255 };
IPAddress SearchIP = new IPAddress(SearchAddr);
IPEndPoint EndPoint = new IPEndPoint(SearchIP, 45624);
UdpClient Searcher = new UdpClient(EndPoint);
byte[] SearchPacket = new byte[] { 0x34, 0x00, 0xB0, 0xFA, 0x02, 0x00, 0x08, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x70, 0x6C, 0x61, 0x79, 0x02, 0x00, 0x0E, 0x00, 0x20, 0x74, 0x79, 0x99,
    0xF5, 0xF5, 0xCF, 0x11, 0x98, 0x27, 0x00, 0xA0, 0x24, 0x14, 0x96, 0xC8, 0x00, 0x00, 0x00, 0x00,
    0x81, 0x00, 0x00, 0x00 };
Searcher.Send(SearchPacket, SearchPacket.Length);
byte[] SearchReply = Searcher.Receive(ref EndPoint);
string ReplyText = "";
for (int I = 0; I < SearchReply.Length; I++)
    ReplyText += SearchReply[I].ToString("X2") + " ";
MessageBox.Show(ReplyText);

有谁知道问题到底是什么吗?

所请求的地址在其上下文中无效.SocketException

UdpClient.Send的文档阐明了这个问题:

对象中建立的远程主机发送数据报Connect方法并返回发送的字节数。如果你没有在调用此重载之前调用Connect, Send方法将抛出a SocketException .

你应该使用这个重载:

Searcher.Send(SearchPacket, SearchPacket.Length, EndPoint);