5.2.4 获得网络连接信息的各个方法的演示
优质
小牛编辑
125浏览
2023-12-01
在本例中将演示如何利用上一节介绍的方法来获得客户机的网络连接信息。
例子 : 获得网络连接信息的各个方法的演示
1. 编写NetworkInfo类
NetworkInfo类负责使用5.2.3节介绍的方法获得并输出客户机的网络连接信息,该类的实现代码如下:
package chapter5;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class NetworkInfo extends HttpServlet
{
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<b>获得网络连接信息</b><br/>");
// 返回客户机用于发送请求的IP地址
out.println("getRemoteAddr:" + request.getRemoteAddr() + "<br/>");
// 返回客户机的主机名。如果Servlet引擎不能解析出客户机的主机名,返回客户端的IP
out.println("getRemoteHost:" + request.getRemoteHost() + "<br/>");
// 返回客户机所使用的网络接口的端口号(这个值是由客户机的网络接口随机分配的)。
out.println("getRemotePort:" + request.getRemotePort() + "<br/>");
// 返回Web服务器上接收请求的网络接口使用的IP地址
out.println("getLocalAddr:" + request.getLocalAddr() + "<br/>");
// 返回Web服务器上接收请求的网络接口使用的IP地址所对应的主机名
out.println("getLocalName:" + request.getLocalName() + "<br/>");
// 返回Web服务器上接收请求的网络接口的端口号
out.println("getLocalPort:" + request.getLocalPort() + "<br/>");
// 返回HTTP请求消息的Host字段的值的主机名部分
out.println("getServerName:" + request.getServerName() + "<br/>");
// 返回HTTP请求消息的Host字段的值的端口号部分
out.println("getServerPort:" + request.getServerPort() + "<br/>");
// 返回请求的协议名,如http、https等
out.println("getScheme:" + request.getScheme() + "<br/>");
// 返回完整的请求URL(不包括参数部分)。这个方法返回的是StringBuffer类型,而不是String类型
out.println("getRequestURL:" + request.getRequestURL() + "<br/>");
}
}
2. 配置NetworkInfo类
NetworkInfo类的配置代码如下:
<servlet>
<servlet-name>NetworkInfo</servlet-name>
<servlet-class>chapter5.NetworkInfo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NetworkInfo</servlet-name>
<url-pattern>/NetworkInfo</url-pattern>
</servlet-mapping>
3. 查看输出的网络连接信息
为了区分这些方法的返回值,我们使用两台机器来测试这个程序。假设运行Tomcat的服务器的IP是192.168.18.212,客户机的IP是192.168.18.120。在客户机的浏览器地址栏中输入如下的URL:
http://localhost:8080/demo/NetworkInfo
浏览器中显示的结果如图5.8所示。
图5.8 输出网络连接信息