java套接字获取连接的套接字客户端的IP

java套接字获取连接的套接字客户端的IP,java,sockets,server,client,serversocket,Java,Sockets,Server,Client,Serversocket,大家好,我目前正在尝试一些Socket,Socket服务器应用程序,只是为了获得经验和知识 我有个小问题 我尝试了internet上的所有信息来检索所连接套接字的IP地址,但最终得到了自己的服务器IP地址 我尝试使用socketName.getRemoteSocketAddress(),socketName.getInetAddress() 但是,两者都返回了服务器IP地址,而不是客户端IP地址 我的代码看起来像这样 ServerSocket ss = new ServerSocket(port

大家好,我目前正在尝试一些Socket,Socket服务器应用程序,只是为了获得经验和知识

我有个小问题

我尝试了internet上的所有信息来检索所连接套接字的IP地址,但最终得到了自己的服务器IP地址

我尝试使用
socketName.getRemoteSocketAddress(),socketName.getInetAddress()

但是,两者都返回了服务器IP地址,而不是客户端IP地址

我的代码看起来像这样

ServerSocket ss = new ServerSocket(port);
print("Server Established on port " + port);
Socket client = ss.accept();
print("Client connected , IP = " + client.getInetAddress() );
当客户端从不同的互联网连接时(我在家的朋友让客户端应用程序运行,并试图通过键入我自己的公共IP端口进行连接)

是的,我已经确保端口正确转发并打开以进行连接,到目前为止,该应用程序运行良好,但我得到的IP地址是服务器的IP而不是客户端IP


有没有其他方法可以从服务器端而不是客户端获取它。

你检查过你朋友的公共IP与你的不一样吗?有可能你们都支持相同的NAT。@user3707125是的,我朋友的公共IP与我的不一样,就像41.xxx.xxx.xx,他的是163.xxx.xxx.xxx,不管怎样,但都是ds返回服务器IP,这是我的IP(服务器运行的IP)。你说的NAT是什么意思?我只知道我在路由器中打开了4444端口,所以客户端可以连接(端口转发)这会有什么作用吗?就是这样。如果这些方法不返回它,信息就不可用,可能是因为某个地方的NAT或其他原因。可能是你自己的NAT。@TheOnlyOne,你可以在wiki或其他地方阅读关于NAT的信息-只需谷歌一下。现在使用像这样的网站来验证你真正的IP是你想要的。然后我们就可以投资了再往前走一点。