当前位置: 首页 > 编程语言 > C#

将两个UDP客户端连接到一个端口(发送和接收)share

时间:2023-04-10 15:46:48 C#

将两个UDP客户端连接到一个端口(发送和接收)请...任何帮助将不胜感激!这是我的代码:staticvoidMain(string[]args){IPEndPointlocalpt=newIPEndPoint(IPAddress.Any,6000);UdpClientudpServer=newUdpClient(localpt);udpServer.Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);UdpClientudpServer2=newUdpClient();udpServer2.Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);udpServer2.Client.Bind(localpt);//<<---------Exceptionhere}您必须在绑定之前设置套接字选项。staticvoidMain(string[]args){IPEndPointlocalpt=newIPEndPoint(IPAddress.Any,6000);UdpClientudpServer=newUdpClient();udpServer.Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);udpServer.Client.Bind(localpt);UdpClientudpServer2=newUdpClient();udpServer2.Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);udpServer2.Client.Bind(localpt);//或者更具体说明的例子:staticvoidMain(string[]args){IPEndPointlocalpt=newIPEndPoint(IPAddress.Loopback,6000);ThreadPool.QueueUserWorkItem(delegate{UdpClientudpServer=newUdpClient();udpServer.ExclusiveAddressUse=false;udpServer.Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);udpServer.Client.Bind(localpt);IPEndPointinEndPoint=newIPEndPoint(IPAddress.Any,0);Console.WriteLine("监听"+localpt+".");byte[]buffer=udpServer.Receive(refinEndPoint);Console.WriteLine("接收自"+inEndPoint+""+Encoding.ASCII.GetString(buffer)+".");});线程.睡眠(1000);UdpClientudpServer2=newUdpClient();udpServer2.ExclusiveAddressUse=false;udpServer2.Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);udpServer2.Client.Bind(localpt);udpServer2.Send(newbyte[]{0x41},1,localpt);控制台.Read();我查看了您的错误消息,这解释了错误是什么以及发生的原因这是确切的错误消息和原因WSAEACCES10013(MSDN)无权限。试图以访问权限禁止的方式访问套接字。一个例子是使用sendto的广播地址而不用setsockopt(SO_BROADCAST)设置广播权限。WSAEACCES错误的另一个可能原因是调用绑定函数时(在带有SP4和更高版本的WindowsNT4.0上),另一个应用程序、服务或内核模式驱动程序绑定到同一地址。这种独占访问是WindowsNT4.0SP4及更高版本的新增功能,是通过使用SO_EXCLUSIVEADDRUSE选项实现的。即使更改您的代码以便我可以传入IP地址,我也会收到相同的错误消息,看起来您无法绑定到同一端口,这里只能使用一个端口是我用于您的示例的示例代码和更改它从我的本地计算机捕获我的IP..IPAddressipAddress=Dns.Resolve(Dns.GetHostName()).AddressList[0];IPEndPointipLocalEndPoint=newIPEndPoint(ipAddress,11000);//IPEndPointlocalpt=newIPEndPoint(ipLocalEndPoint);UdpClientudpServer=newUdpClient(ipLocalEndPoint);udpServer.Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);udpServer.Connect(ipLocalEndPoint);UdpClientudpServer2=newUdpClient();udpServer2.Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);udpServer2.Client.Bind(ipLocalEndPoint);//这会在Bind()方法上产生异常。抱歉。解决UDP应用中的WSAEACCESS10013(M??SDN)异常,可以试试上面的C#学习教程:一个端口连接两个UDP客户端(发送和接收)分享全部内容,如果对大家有用需要了解一下更多C#学习教程,希望大家多多关注---udpServer.Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.Broadcast,true);会员删除。如需转载请注明出处: