【发布时间】:2019-04-19 01:06:29
【问题描述】:
我正在尝试侦听来自未知来源的 UDP 数据包。但无法绑定“未指定地址”(0.0.0.0 或 ::)
我已经尝试在 ::1 上收听。但从我测试的结果来看,这只适用于不通过网络接口的本地连接。
public async void AwaitDiscoveryReply()
{
try
{
using (var client = new UdpClient(AddressFamily.InterNetworkV6))
{
client.Connect(IPAddress.IPv6Any,4568);
var result = await client.ReceiveAsync();
Debug.WriteLine("Received DR");
var stateProtocol = StateProtocol.FromBytes(result.Buffer);
var robeatsDevice = new RobeatsDevice
{
Id = stateProtocol.DeviceId,
Name = stateProtocol.DeviceName,
EndPoint = client.Client.RemoteEndPoint,
StateProtocol = stateProtocol
};
OnDiscoveryReply(new DeviceDiscoveryEventArgs {RobeatsDevice = robeatsDevice});
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
这不断抛出异常:The requested address is not valid in its context [::]:4568
【问题讨论】:
-
您使用的是 IPV4 还是 IPV6?
-
IPV6 但我认为在这种情况下这并不重要
-
那么端口已经在使用中。尝试使用 from cmd.exe >Netstat -a 查看正在使用的端口。
-
jdweng - 如果地址已经绑定,错误消息会清楚地表明这一点。