【问题标题】:how to achieve AddressFamily in winRT如何在winRT中实现AddressFamily
【发布时间】:2013-12-16 17:22:02
【问题描述】:

我正在寻找 System.Net.Sockets.AddressFamily.InterNetwork 的替代品。我找到了 HostName,但找不到可以像 AdressFamily 那样做的事情。实际上,我正在 winRT 中转换以下代码。我知道 winRT 支持 Windows.Networking.Sockets 等。请描述一些解决方案。 代码是,

if (System.Net.Sockets.AddressFamily.InterNetwork == _address.AddressFamily &&     _address.AddressFamily == address.AddressFamily)
        {
            long longLocal = BitConverter.ToInt32(_address.GetAddressBytes(), 0);
            long longNetMask = BitConverter.ToInt32(_netmask.GetAddressBytes(), 0);
            long longRemote = BitConverter.ToInt32(address.GetAddressBytes(), 0);
        }

_address 也是 IPAdress

【问题讨论】:

    标签: c# windows-8 windows-phone-8 windows-runtime


    【解决方案1】:

    AddressFamily 不直接支持 WinRT/Metro 项目所以你需要做的是检查ipAddress 这样的信息

    using Windows.Networking;
    using Windows.Networking.Sockets;
    
    HostName serverHost = new HostName("www.contoso.com");
    StreamSocket clientSocket = new Windows.Networking.Sockets.StreamSocket();
    
    // Try to connect to the remote host
    await clientSocket.ConnectAsync(serverHost, "http");
    
    var ipAddress = clientSocket.Information.RemoteAddress.DisplayName
    

    要检查您的状况,请使用_address.Type == HostNameType.Ipv4,然后做一些事情,但要确保HostName 类中不存在GetAddressBytes,因此您需要编写自己的函数将ipAddress 转换为字节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2012-10-22
      • 1970-01-01
      相关资源
      最近更新 更多