java 怎么写一个接口 让他返回服务器的动态IP地址和端口?

java 怎么写一个接口 让他返回服务器的动态IP地址和端口?,第1张

首先服务器IP是动态的,这个接口还怎么访问呢?
所以,应该是要请求一个固定可访问的接口,然后这个接口去访回动态的其他服务器IP和端口,而这端口和IP是没办法在本机获取,需要在想要被访问的程序启动时,将其IP和端口写入共享区域(数据库,共享内存等),固定的获取接口根据条件获取动态IP和端口。

requestgetHeader("REDIRECT_URL");
或试试
那在servlet里边或者action调用requestgetRequestURL()就是了。
如果是获得容器内部的请求URI:requestgetRequestURI(),两个方法挺象的。

jsp中:
request方法
客户端IP: requestgetRemoteAddr()
输出:1921680106
客户端主机名:requestgetRemoteHost()
输出:abc
requestgetHeader("Host")
输出:19216801:8080
Web服务器名字:requestgetServerName()
输出:19216801
服务器监听的端口:requestgetServerPort()
输出:8080
在JSP里,获取客户端的IP地址的方法是:requestgetRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 requestgetRemoteAddr()方法获取的IP地址是:127001或 1921681110,而并不是客户端的真实IP。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的>

下面提供二种方法会使用java发送url请求,并获取服务器返回的值

第一种方法:
代码如下:

import orgapache>

publicstaticStringsendUrlRequest(StringurlStr,Stringparam1,Stringparam2)throwsException{
StringtempStr=null;
>

//设置超时时间
>

//封装需要传递的参数
List<NameValuePair>nvps=newArrayList<NameValuePair>();
nvpsadd(newBasicNameValuePair("mainMemoCode",strmainMemoCode));
nvpsadd(newBasicNameValuePair("recordPassWord",strrecordPassWord));
//客户端的请求方法类型
>

//获取服务器返回>

//获取服务器返回页面的值
entity=responsegetEntity();
xmlContent=EntityUtilstoString(entity);
Stringstrmessage=null;
Systemoutprintln(xmlContent);
Systemoutprintln(responsegetHeaders("Content-Type")[0]getValue()toString());
>

}
catch(SocketTimeoutExceptione)
{
}
catch(Exceptionex)
{
exprintStackTrace();
}
finally{
>

代码如下:


publicstaticStringsendUrlRequest(StringurlStr,Stringparam1,Stringparam2)throwsException{

>

PrintWriterout=newPrintWriter(newOutputStreamWriter(connectiongetOutputStream(),"GBK"));
outprintln(param);
outclose();
BufferedReaderin=newBufferedReader(newInputStreamReader(connection
getInputStream(),"GBK"));

StringinputLine;

while((inputLine=inreadLine())!=null){
bankXmlBufferappend(inputLine);
}
inclose();
tempStr=bankXmlBuffertoString();
}
catch(Exceptione)
{
Systemoutprintln("发送GET请求出现异常!"+e);
eprintStackTrace();

}finally{
if(url_con!=null)
url_condisconnect();
}

returntmpeStr;
}

总结:多练习代码,熟练之后才能更快速的去了解代码的学习的方法。多去获取一些思维方面的书籍可以看看。


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

原文地址: https://outofmemory.cn/zz/12773907.html

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

发表评论

登录后才能评论

评论列表(0条)

保存