如何在MyEclipse中监听TCP/IP数据传输

版权所有,禁止匿名转载;禁止商业使用。

一、什么是 TCP/IP Monitor


TCP/IP monitor 是可以监控在某个端口上通过 TCP/IP 协议传送的通信数据的一个工具软件。 TCP/IP monitor 工具,通过一些配置,这个工具可以用简单明了的形式将客户端和服务器端之间传输的数据呈现给开发者。


二、TCP/IP monitor工作原理


TCP/IP monitor 类似一个代理服务器或者转发器。其工作原理如下:


167a32e607edb872d864def43cf71859.jpg


1.客户端向”本地监听端口”发起请求,TCP/IP Monitor 获取客户端发送的数据,并显示该数据。


2.TCP/IP Monitor 将在 1 步骤得到的数据转发给”服务器端口”, 服务器端接收数据。


3.TCP/IP Monitor 从接收服务器端返回的数据 , 并显示该数据。


4.TCP/IP Monitor 将在 3 步骤得到的数据返回客户端,客户端接收到数据。


三、打开TCP/IP Monitor步骤


打开 TCP/IP Monitor,创建一个本地代理端口监听服务器 Http 端口就行了。具体步骤如下:


1.打开 WebSphere Commerce 开发环境 , 选择 Windows->Show View->TCP/IP Monitor。


ef58d91bd0a2dd6bef17f3919374c675.jpg


点击ok即可。


9904caccf167c4b728f14d7a4a7c6290.jpg


2.在 TCP/IP Monitor 中点击右键,选择 Properties, 点击 Add 添加一个新的本地代理端口,各设置项的含义如下:


ea085170073787754f3e04aa87f6e021.jpg


c05b2275627d3d736241d098528352e0.jpg


local monitoring port: 指定本地代理端口,用于监听服务器端口


Host name: 指定要监听的主机


Port: 指定要监听的服务器端口


Type: 指定监听的协议类型


把它修改为:


abbe9b0f67781eacce526d82bb99116c.jpg


3.进行设置并保存,选定该本地代理端口并点击 Start 以打开端口开始监听。


7f2892694da7d4975716cbb99ed1821b.jpg


效果:

b124116f7114dbb16720b50a80eabb33.jpg



小结:只要进行 Web 开发,有 Client 和 Server 端的 TCP/IP 请求的开发,都可以利用 TCP/IP Monitor 来监控客户端和服务端交互的内容,从而精确定位问题原因。


四、测试 TCP/IP Monitor


1.新建一个java web工程:


a4744e56255985267f6a371fe54f712d.jpg


HelloWorld.html 源码:


<html>
  <head>  
  </head>  
  <body style="font-size:24px">
    <form action="hello" method="get">
        Name:<input name="name"><br>
        Contact Me:<Br>
        QQ<input type="checkbox" name="contact"
           value="qq"/>
        Tel<input type="checkbox" name="contact" 
           value="tel"/>
        WeChat<input type="checkbox" name="contact" 
           value="wechat"/>
        <br>
        <input type="submit" value="OK">
    </form>
  </body>
</html>

HelloWorld源码:


package web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorld extends HttpServlet {
    /**
     * 获取请求中的name、contact两组参数值
     * 分别使用getParameter和getParameterValues方法获取
     */
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {        
        PrintWriter out = resp.getWriter();
        //获取提交的name的值
        String name = req.getParameter("name");
        out.println("Hello," + name);
        //获取提交的contact的值
        String[] contacts = req.getParameterValues("contact");
        if(contacts!=null){
            out.print("Contact Information:");
            for(String info :contacts){
                out.print(info+",");
            }
        }
        out.close();
    }
}

xml源码:


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
      <servlet-name>HelloWorld</servlet-name>
      <servlet-class>web.HelloWorld</servlet-class>
  </servlet>  
  <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>
      <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

最后部署项目到Tomcat,在浏览器中输入访问地址:

http://localhost:8888/TCP/HelloWorld.html

4801ee98b984f910d467184ef616431e.jpg


通过输入名字和选择相应的选项。


9c4d20c6b2991e9c43c69745a1ba25bb.jpg


然后观察TCP控制台这边,可以获得以下的信息。



9904caccf167c4b728f14d7a4a7c6290.jpg

同时通过变换HelloWorld.html 中的表单方式get,post会得出的不同的效果。具体请参看以下post和get的区别。


0 0