我正在尝试将端口45624上的广播数据包(dest:FF.FF.FF.FF)发送到本地网络,除了在创建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);
有谁知道究竟是什么问题?
答案 0 :(得分:4)
UdpClient.Send
的文档阐明了这个问题:
此重载将数据报发送到在其中建立的远程主机
Connect
方法并返回发送的字节数。如果你不 在调用此重载之前调用Connect
,Send
方法将抛出SocketException
。
您应该使用this overload代替:
Searcher.Send(SearchPacket, SearchPacket.Length, EndPoint);