服务端怎么获取客户端的ip java

服务端怎么获取客户端的ip java,第1张

网络通信可分为两种模式:TCP有连接的通信
UDP无连接的通信
依照上述的问题我可以理解为你是要进行有连接的通信。是要经过三次握手才能实现可靠的连接
第一次:建立连接时三次握手,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN(Synchronize Sequence Numbers)同步序列号。
服务器端即可使用:
Socket s=serverSocketaccept();
String clientIP=sgetInetAddress()toString();
这就实现了java服务器端获取到连接此服务器的客户端的IP了,你若想实现获取所有连接此服务器的客户端的IP,你可以把每次accept()返回的socket放进全局的Vector里面,然后在遍历这个vector方法就同上代码咯……

1、如果服务器如果没有采用反向代理,而且客户端没有用正向代理的话,那么可以获取客户端的真实IP地址requestgetRemoteAddr()

2、如果服务器如果没有采用反向代理,而且客户端有用正向代理的话,那么通过requestgetRemoteAddr()获取客户端的IP地址是客户端 的代理服务器的地址,并不是客户端的真实地址,

3、如果客户端使用的是多层代理的话,服务器获得的客户端地址是客户端的最外围代理服务器的地址如果服务器如果采用反向代理服务器,不管客户端采用的是何种方式访问服务器。

//获得客户端真实IP地址的方法一:
public String getRemortIP(>所以javascript可以通过ajax技术来获得后端语言得到的IP,并返回到前端。
1:通过java的servlet获取IP:
public String getRemoteAddress(>/
  获取访问者IP地址
  <p>在一般情况下使用RequestgetRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。</p>
  <p>本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割)。</p>
  <p>如果还不存在则调用RequestgetRemoteAddr()。</p>
  @param request
  @return
 /
public static String getIp(>java获取本机的外网ip示例:
import javaioIOException;
import javaioInputStream;
import javanet>首先服务器IP是动态的,这个接口还怎么访问呢?
所以,应该是要请求一个固定可访问的接口,然后这个接口去访回动态的其他服务器IP和端口,而这端口和IP是没办法在本机获取,需要在想要被访问的程序启动时,将其IP和端口写入共享区域(数据库,共享内存等),固定的获取接口根据条件获取动态IP和端口。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10315513.html

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

发表评论

登录后才能评论

评论列表(0条)

保存