使用C#从服务器Ping一个TCP客户端

4
如何从服务器对 TcpClient 进行 ping 并查看其响应时间?我创建了一个带有 TCPClientManagerTCPServer。每当客户端连接时,它会将一个新的 Client 添加到 .NET TcpClient 属性的 List 中。我该如何获取 TcpClient 的地址,以便使用 .NET Ping 进行 ping?
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;
}

可能是如何使用TcpClient获取客户端IP地址?的重复问题。 - cbr
1个回答

4
如果我正确理解了你的问题,你想要连接的TcpClientIPAddress,这可以通过访问底层套接字(通过Client属性公开)并使用其EndPoint属性来实现。您需要将其转换为IPEndPoint才能正确访问它。
在您的情况下,只需使用((IPEndPoint)client.Client.RemoteEndPoint).Address即可返回一个IPAddress
因此,您需要将示例更改为:
IPAddress address = IPAddress.Parse(Client.tcpClient...???);

to:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接