我正在尝试发送udp广播,并在c#中收到答案.虽然发送广播完美,但我没有收到任何c#的答案.但是当我看看wireshark时,我可以看到已经发送了一个答案:
>从192.168.0.141发送到192.168.0.255
>从192.168.0.105发送到255.255.255.255(这将是答案)
Wireshark日志:
1 0.000000 192.168.0.141 192.168.0.255 UDP Source port: 55487 Destination port: 17784 2 0.000851 192.168.0.105 255.255.255.255 UDP Source port: 17784 Destination port: 55487
那是我的c#代码:
private static byte[] SendBuffer = new byte[] { 1,2,3 }; public static void SendAndReceivebroadcast( byte[] data,IPEndPoint broadcastEndpoint ) { using( Socket broadcastSocket = new Socket( AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp ) ) { broadcastSocket.SetSocketoption( SocketoptionLevel.socket,SocketoptionName.broadcast,1 ); broadcastSocket.SendTo( data,broadcastEndpoint ); receivePort = broadcastSocket.LocalEndPoint.ToString().Split( ':' )[1]; Console.WriteLine( "Sent {0} from Port {1}",CollectionsHelper.ItemsToString( data,"{0:X2}" ),broadcastSocket.LocalEndPoint.ToString() ); broadcastSocket.Close(); } using( Socket receiveSocket = new Socket( AddressFamily.InterNetwork,ProtocolType.Udp ) ) { IPEndPoint broadcastAddress = new IPEndPoint( IPAddress.Any,Convert.ToInt32( receivePort ) ); UdpClient udpClient = new UdpClient(); udpClient.Client.SetSocketoption( SocketoptionLevel.socket,SocketoptionName.ReuseAddress,true ); udpClient.Client.Bind( broadcastAddress ); IPEndPoint remoteIP = new IPEndPoint( IPAddress.Any,Convert.ToInt32( receivePort ) ); byte[] answer = udpClient.Receive( ref remoteIP ); } }
调用udpClient.Receive时程序停止.任何人都可以帮助我PLZ?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。