/**
* 获取外网IP
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) {
String ipAddress = null
// ipAddress = this.getRequest().getRemoteAddr()
ipAddress = request.getHeader("x-forwarded-for")
if (ipAddress == null || ipAddress.length() == 0
|| "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP")
}
if (ipAddress == null || ipAddress.length() == 0
|| "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP")
}
if (ipAddress == null || ipAddress.length() == 0
|| "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr()
if (ipAddress.equals("127.0.0.1")) {
// 根据网卡取本机配置的IP
InetAddress inet = null
try {
inet = InetAddress.getLocalHost()
} catch (UnknownHostException e) {
e.printStackTrace()
}
ipAddress = inet.getHostAddress()
}
}
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ipAddress != null &&ipAddress.length() >15) { // "***.***.***.***".length()
// = 15
if (ipAddress.indexOf(",") >0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","))
}
}
return ipAddress
}
————————————————
版权声明:本文为CSDN博主「秋9」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jlq_diligence/article/details/87871484
java中的socket客户端只需用服务器所在机器的ip以及服务器的端口作为参数创建一个Socket对象就可以了,客户端的代码可以看下实例:Socket socket = new Socket("168.160.12.42",9998)
或:
Socket socket = new Socket(InetAddress.getLocalHost(),5678) // 向主机名为InetAddress.getLocalHost()的服务器申请连接
客户机必须知道有关服务器的IP地址,对于着一点Java也提供了一个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供,它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法。
in = new BufferedReader(new InputStreamReader(socket.getInputStream()))
out = new PrintWriter(socket.getOutputStream(),true)
以上的程序代码建立了一个Socket对象,这个对象连接到ip地址为168.160.12.42的主机上、端口为9998的服务器对象。并且建立了输入流和输出流,分别对应服务器的输出和客户端的写入。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)