如何获取客户端ip

如何获取客户端ip,第1张

    取客户端的IP地址的方法通常是request.getRemoteAddr(),这种方法在大部分情况下都是有效的。如果使用了反向代理软件(Apache,Squid等),用request.getRemoteAddr()方法获取的IP地址实际上是代理服务器的地址。

    不过大部分HTTP代理或负载均衡服务器会将X-Forwarded-For作为存放客户端最原始的IP地址的HTTP请求头字段,如果经过多级反向代理的话,IP将会追加在其后并以逗号隔开,X-Forwarded-For的值并不止一个,取X-Forwarded-For中第一个非unknown的有效IP字符串即可。

    经过apache http转发后一般会加上Proxy-Client-IP请求头,WL-Proxy-Client-IP是它的weblogic插件加上的请求头,有些代理服务器会加上此请求头HTTP_CLIENT_IP,nginx代理一般会加上请求头X-Real-IP。获取方法参考下面:

网络通信可分为两种模式:TCP有连接的通信

UDP无连接的通信

依照上述的问题我可以理解为你是要进行有连接的通信。是要经过三次握手才能实现可靠的连接

第一次:建立连接时三次握手,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN(Synchronize Sequence Numbers)同步序列号。

服务器端即可使用:

Socket s=serverSocket.accept()

String clientIP=s.getInetAddress().toString()

这就实现了java服务器端获取到连接此服务器的客户端的IP了,你若想实现获取所有连接此服务器的客户端的IP,你可以把每次accept()返回的socket放进全局的Vector里面,然后在遍历这个vector方法就同上代码咯……


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/94120.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-07
下一篇2023-03-07

发表评论

登录后才能评论

评论列表(0条)

    保存