Mac下使用Apache TCPMon

Richaaaard發表於2015-12-04

Mac下使用Apache TCPMon


參考連結:

TCPMon Tutorial

Anyone know how to get TCPMON working on a mac?

Apache TCPMon

是一個開源的檢查TCP網路資料流的除錯工具。TCPMon處在客戶端(消費者)和伺服器之間,客戶端與TCPMon連線,然後TCPMon將資料傳送給伺服器,並將資料顯示到它的客戶端顯示。

Apache TCPMon 的下載地址:
http://archive.apache.org/dist/ws/tcpmon/1.0/
Mac下使用Apache TCPMon

注意 只是一個與code.google.com上不同的TCPMon

下面是一個坑

如果按照Apache或者網上很多連結裡面搜尋到的使用方法,在mac下直接執行

    build/tcpmon.sh

然後會得到系統反饋

    -bash: build/tcpmon.sh: Permission denied
    

即使修改檔案許可權

    sudo chmod 755 'build/tcpmon.sh'
    

仍然會得到一個執行錯誤說找不到“TCPMon”

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/ws/commons/tcpmon/TCPMon
    Caused by: java.lang.ClassNotFoundException: org.apache.ws.commons.tcpmon.TCPMon
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

如果嘗試通過java執行

    $ java -jar tcpmon-1.0.jar
        Failed to load Main-Class manifest attribute from tcpmon-1.0.jar

所以這裡的jar包打的有問題,我們需要重新生成這個jar

apache.org上下載tcpmon-1.0.src.zip,然後用Eclipse工程開啟重新生成新的jar(我這裡用的是JDK7)

第一步

新建一個工程並將src裡面的java程式碼引入

Mac下使用Apache TCPMon

第二步

右件選擇專案然後Properties -> Export
Mac下使用Apache TCPMon

第三步

選擇Runnable JAR file並生成tcpmon-1.0-fixed.jar
Mac下使用Apache TCPMon

Mac下使用Apache TCPMon

第四步

我們可以雙擊執行tcpmon-1.0-fixed.jar

Mac下使用Apache TCPMon

坑結束

使用Apache TCPMon

如下圖中

Mac下使用Apache TCPMon

  • “Listen Port # 9000”,是客戶端連線TCPMon的埠號

      client.setServiceClass(HelloWorld.class);  
      client.setAddress("http://localhost:9001/cxf/services/HelloService");  
      HelloWorld helloworld = (HelloWorld) client.create();  
      System.out.println(helloworld.sayHi("Richard"));  
  • “Target Hostname 127.0.0.1”,是本地IP
  • “Target Port # 8080”,通常是本地Tomcat啟動埠

相關文章