如何找到连接到服务器的客户端的 IP 地址?

Posted

技术标签:

【中文标题】如何找到连接到服务器的客户端的 IP 地址?【英文标题】:How to find the IP Address of Client connected to Server? 【发布时间】:2010-12-22 20:42:30 【问题描述】:

我的客户端电脑通过以太网上的套接字作为服务器电脑连接,我如何从服务器端代码中找到此客户端的 IP。 服务器在一个新线程中为每个客户端分配一个套接字。 当我在客户端套接字上执行csocket.getLocalAddress().toString() 时,我仍然得到服务器 IP 地址。 (csocket 是服务器在现在的客户端连接上生成的套接字并将其传递给新线程)。

【问题讨论】:

【参考方案1】:

我相信您想改用remote address:

csocket.getRemoteSocketAddress().toString();

【讨论】:

如何从 HttpServer 对象获取客户端 IP?看这里:***.com/questions/25274828/…【参考方案2】:

我想您可能正在寻找Socket 对象的getInetAddress 方法。

【讨论】:

这给出了套接字的本地地址。服务器需要从自己的角度去寻找远程地址。 @Stephen:根据 Javadoc,getInetAddress()“返回此套接字连接的远程 IP 地址,如果套接字未连接,则返回 null。”【参考方案3】:

使用此代码:

String ip=(((InetSocketAddress) socket.getRemoteSocketAddress()).getAddress()).toString().replace("/","");

【讨论】:

这是正确答案。其他答案返回“ipaddr:port”。此答案返回 IP 地址并删除端口号。【参考方案4】:

请改用getRemoteSocketAddress()

【讨论】:

以上是关于如何找到连接到服务器的客户端的 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章

思科 *** IP 地址

U8连不上服务器?

如何获取客户端 IP 地址

如何控制对等端的套接字[TCP打孔]

如何用javascript获取客户端的IP地址?

C# - 连接到 (RAS) *** 时如何获取 IP 地址