Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定到单个适配器的WinRT多播套接字_C#_.net_Windows Runtime - Fatal编程技术网

C# 绑定到单个适配器的WinRT多播套接字

C# 绑定到单个适配器的WinRT多播套接字,c#,.net,windows-runtime,C#,.net,Windows Runtime,我有一个数据报套接字,用于发送和接收多播数据包。使用时,它在物理设备上的所有适配器上发送和接收数据。有没有办法指定使用哪个适配器而不是全部使用它们 如果我与 await _datagramSocket.BindServiceNameAsync(ServicePort); await _datagramSocket.BindEndpointAsync(new HostName(AdapterHostname), ServicePort); 然后使用所有适配器。如果我与 await _datag

我有一个数据报套接字,用于发送和接收多播数据包。使用时,它在物理设备上的所有适配器上发送和接收数据。有没有办法指定使用哪个适配器而不是全部使用它们

如果我与

await _datagramSocket.BindServiceNameAsync(ServicePort);
await _datagramSocket.BindEndpointAsync(new HostName(AdapterHostname), ServicePort);
然后使用所有适配器。如果我与

await _datagramSocket.BindServiceNameAsync(ServicePort);
await _datagramSocket.BindEndpointAsync(new HostName(AdapterHostname), ServicePort);
然后抛出以下错误:
每个套接字地址协议/网络地址/端口通常只允许使用一次。HRESULT异常:0x80072740通常在IP地址和端口号上绑定套接字。当您尝试使用相同的端口号再次绑定它时,它将通过错误。您可以处理可能需要一段时间的第一个连接,在两个调用之间使用一些睡眠,然后再次尝试绑定 或
使用不同的端口号

感谢Narinder,不过我正在使用上述代码行中的一行或另一行,这是我在应用程序中声明的第一个也是唯一一个套接字。也就是说,我希望在不同的IP上使用相同的端口号。这是不可能的吗?嗨,奥利,您不能将多个端点多个IP与单个套接字对象绑定,创建多个套接字对象并使用集合为每个IP和端口维护一个对象,当您要向每个端点发送数据时,请循环每个对象并向每个客户端发送数据。使用收集对象`public static SortedList clientSocketCollection=new SortedList`谢谢Narinder,我愚蠢地在发布之前没有检查netstat。看起来Win RT默认情况下会将我需要的端口绑定到所有适配器,因此我不可能执行我想要执行的操作。