2015-11-28 45 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;