我尝试将一些数据发送到多播组。这工作了一段时间,但现在我得到了一个例外。 Exception表示主机名无法解析(HRESULT:0x80072AF9)。
他试图解析的主机名是ip地址(224.5.6.7)。此异常不会发生在我的Surface RT上,而是发生在Surface Pro上。
使用此示例,我可能会产生错误:
private async void Test()
{
try
{
var socket = new Windows.Networking.Sockets.DatagramSocket();
var localAdress = CurrentIPAddress();
var port = "40404";
const string M_GROUP = "224.5.6.7";
socket.MessageReceived += (sender, ev) => {
System.Diagnostics.Debugger.Break();
};
await socket.BindEndpointAsync(new HostName(localAdress), port);
socket.JoinMulticastGroup(new HostName(M_GROUP));
//HRESULT: 0x80072AF9
var stream = await socket.GetOutputStreamAsync(
new HostName(M_GROUP),
port);
await stream.WriteAsync(new byte[] { 3 }.AsBuffer());
}
catch (Exception e)
{
System.Diagnostics.Debugger.Break();
throw;
}
}
private string CurrentIPAddress()
{
var icp = NetworkInformation.GetInternetConnectionProfile();
if (icp != null && icp.NetworkAdapter != null)
{
var hostname =
NetworkInformation.GetHostNames()
.SingleOrDefault(
hn =>
hn.IPInformation != null && hn.IPInformation.NetworkAdapter != null
&& hn.IPInformation.NetworkAdapter.NetworkAdapterId
== icp.NetworkAdapter.NetworkAdapterId);
if (hostname != null)
{
// the ip address
return hostname.CanonicalName;
}
}
return string.Empty;
}
在调用GetOutputStreamAsync时发生异常。
在两个系统中,套接字都绑定到ipv4地址 这两个系统都是最新的。 (2014年5月29日)
答案 0 :(得分:0)