如何在MyEclipse中監聽TCP/IP資料傳輸

daliu_it發表於2014-12-26

一、什麼是 TCP/IP Monitor

TCP/IP monitor 是可以監控在某個埠上通過 TCP/IP 協議傳送的通訊資料的一個工具軟體。 TCP/IP monitor 工具,通過一些配置,這個工具可以用簡單明瞭的形式將客戶端和伺服器端之間傳輸的資料呈現給開發者。

二、TCP/IP monitor工作原理

TCP/IP monitor 類似一個代理伺服器或者轉發器。其工作原理如下:

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。

點選ok即可。

2.在 TCP/IP Monitor 中點選右鍵,選擇 Properties, 點選 Add 新增一個新的本地代理埠,各設定項的含義如下:

local monitoring port: 指定本地代理埠,用於監聽伺服器埠

Host name: 指定要監聽的主機

Port: 指定要監聽的伺服器埠

Type: 指定監聽的協議型別

把它修改為:

3.進行設定並儲存,選定該本地代理埠並點選 Start 以開啟埠開始監聽。

效果:

小結:只要進行 Web 開發,有 Client 和 Server 端的 TCP/IP 請求的開發,都可以利用 TCP/IP Monitor 來監控客戶端和服務端互動的內容,從而精確定位問題原因。

四、測試 TCP/IP Monitor

1.新建一個java web工程:

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

通過輸入名字和選擇相應的選項。

然後觀察TCP控制檯這邊,可以獲得以下的資訊。

同時通過變換HelloWorld.html 中的表單方式get,post會得出的不同的效果。具體請參看以下post和get的區別。

相關文章