2015-11-28 46 views
1

如何從服務器ping一個TcpClient以查看響應時間?我有一個TCPServer,我用我創建的TCPClientManager創建。只要客戶端連接,這隻需將一個新的Client與.NET TcpClient屬性添加到List。我如何獲得TcpClient的地址,以便我可以使用.NET Ping進行ping?c#從服務器ping一個TCP客戶端

public long PingClient(Client client) 
{ 
    long pingTime = 0; 
    Ping pingSender = new Ping(); 

    // The class Client has a property tcpClient of type TcpClient 
    IPAddress address = IPAddress.Parse(Client.tcpClient...???); 
    PingReply reply = pingSender.Send(address); 

    if (reply.Status == IPStatus.Success) 
    { 
     pingTime = reply.RoundtripTime; 
    } 

    return pingTime; 
} 
+0

的可能的複製(HTTP [如何使用TcpClient的獲取客戶端IP地址?]://計算器.COM /問題/ 2717381 /怎麼辦-I-GET-使用-TcpClient的客戶端的IP地址) – cubrr

回答

3

如果我明白你的問題正確,你想要的連接TcpClient可通過訪問下伏插座(這是通過Client屬性公開),並用它來完成的IPAddressEndPoint財產。

您必須將其轉換爲IPEndPoint才能正確訪問它。

在你的情況只是使用((IPEndPoint)client.Client.RemoteEndPoint).Address這將返回IPAddress

所以你必須你改變。例如來自:

IPAddress address = IPAddress.Parse(Client.tcpClient...???); 

到:

IPAddress address = ((IPEndPoint)client.Client.RemoteEndPoint).Address;