1

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

如果我绑定

await _datagramSocket.BindServiceNameAsync(ServicePort);

然后使用所有适配器。如果我绑定

await _datagramSocket.BindEndpointAsync(new HostName(AdapterHostname), ServicePort);

然后它抛出以下错误:“每个套接字地址(协议/网络地址/端口)通常只允许使用一次。(来自 HRESULT 的异常:0x80072740)”

4

1 回答 1

0

通常套接字绑定在 IPADDRESS 和端口号上。当您尝试使用相同的端口号再次绑定它时,它将通过错误。您可以处理第一个连接(这可能需要一段时间,在两次调用之间使用一些睡眠),然后尝试再次绑定或使用不同的端口号。

于 2012-10-04T13:22:29.647 回答