2013-12-13 26 views
0

我在找一些替代System.Net.Sockets.AddressFamily.InterNetwork的東西。我發現HostName但無法找到像AdressFamily那樣可以做的事情。其實,我在winRT中轉換下面的代碼。我知道winRT支持Windows.Networking.Sockets等。請描述一些解決方案。 的代碼,如何在winRT中實現AddressFamily

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

回答

1

AddressFamily不直接支持的WinRT /新城項目,所以你需要做的是檢查這樣

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 

ipAddress什麼信息要檢查您的條件,請使用_address.Type == HostNameType.Ipv4然後執行一些操作,但請確保GetAddressBytes不存在於HostName類中,因此您需要寫y我們自己的函數將ipAddress轉換爲字節。