一、什么是 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的区别。

原文作者:daliu_it
博文出处:http://www.cnblogs.com/liuhongfeng/p/4187572.html

本文版权归作者和博客园共有,但未经作者同意转载必须保留以上的声明且在放在文章页面明显位置。谢谢合作。

如何在MyEclipse中建立一个代理服务器的更多相关文章

  1. 如何在Apache中建立一个新端口

    环境: Windows server 2008 R2, Apache, PHP5 步骤: 建立一个目录,里面放置一个index.php. 打开Apache\conf\httpd.conf 文件,做如下 ...

  2. 如何在MyEclipse中通过hibernate使用jtds驱动连接数据库,并向数据库添加数据的方法

    最近学习了下如何在MyEclipse中通过hibernate使用jtds驱动连接数据库,并向数据库添加数据的方法,虽然MyEclipse中自带了连接数据库的方法,我也尝试了下其他方法,如有不当之处请指 ...

  3. 如何在JAVA中实现一个固定最大size的hashMap

    如何在JAVA中实现一个固定最大size的hashMap 利用LinkedHashMap的removeEldestEntry方法,重载此方法使得这个map可以增长到最大size,之后每插入一条新的记录 ...

  4. 如何在idea中引入一个新maven项目

    如何在idea中引入一个新的maven项目,请参见如下操作:      

  5. 【Tomcat-原】如何在Myeclipse中添加本地的Tomcat

    2014-10-27 16-24-09  liulin 说明: Myeclipse中自带Tomcat,如果不想用Myeclipse自带的Tomcat,可以使用本地的Tomcat, 下面将介绍如何在My ...

  6. 如何在html中把一个图片或者表格覆盖在一张已有图片上的任意位置

    如何在html中把一个图片或者表格覆盖在一张已有图片上的任意位置   <div style="position:relative;"> <img src=&quo ...

  7. (转)如何在Linux中统计一个进程的线程数

    如何在Linux中统计一个进程的线程数 原文:http://os.51cto.com/art/201509/491728.htm 我正在运行一个程序,它在运行时会派生出多个线程.我想知道程序在运行时会 ...

  8. 在Myeclipse中拷贝一个web项目,但是tomcat文件夹中没有更新,需要进行修改才能更新。

    1.在Myeclipse中拷贝一个web项目,但是tocat文件夹中没有更新,需要进行修改才能更新. 2.方法:右键这个工程,然后Properties->MyEclipse->Projec ...

  9. Kubernetes入门(四)——如何在Kubernetes中部署一个可对外服务的Tensorflow机器学习模型

    机器学习模型常用Docker部署,而如何对Docker部署的模型进行管理呢?工业界的解决方案是使用Kubernetes来管理.编排容器.Kubernetes的理论知识不是本文讨论的重点,这里不再赘述, ...

随机推荐

  1. C#中,什么时候用yield return

    yield关键字用于遍历循环中,yield return用于返回IEnumerable<T>,yield break用于终止循环遍历. 有这样的一个int类型的集合: static Lis ...

  2. MVC对集合筛选,不使用Where(),而使用FindAll()

    当想对集合筛选的时候,经常想到用Where过滤,而实际上List<T>.FindAll()也是不错的选择. 如果有一个订单,属性有下单时间.区域等等.如何使用List<T>.F ...

  3. 使用 SVWebViewController 推出浏览器控制器

    SVWebViewController 简单翻译 https://github.com/samvermette/SVWebViewController SVWebViewController is a ...

  4. latex用法疑难解析

    latex用法疑难解析 1.问题:如何生成ps(PostScript)文件? 回答: 方法有二 (1)用dvips这个工具,在WinEdt编辑器中专门有一个按钮: (2)如果使用windows系统的话 ...

  5. scala编程第17章学习笔记(4)——元组

    元组可以把固定数量的条目组合在一起以便于作为整体传送.不像数组或列表,元组可以保存不同类型的对象. 元组常用来返回方法的多个值.例如,下面的方法找到集合中的最长单词并返回它的索引: scala> ...

  6. Linux监听进程是否存在,并加入定时任务

    前言 我们在linux主机上可能需要一直运行某一服务,如果关机后或者误杀,使得服务停止,从而影响日常的任务.比如一BI项目数据库的抽取,使用Taskctl调度,在每天固定时间进行数据的抽取,如果主机上 ...

  7. iOS开发-沙盒(sandbox)机制

    苹果前天发的财报,貌似现在用ios系统的比以前又多了一些,但是大家的iPhone购买的渠道也是五花八门,有的从非正规渠道购买的iPhone里的操作系统已经被越狱过,越狱这个事情和Android的roo ...

  8. permission 权限 列表 6.0 运行时【案例】

    demo地址:https://github.com/baiqiantao/PermissionTest.git <uses-permission android:name="andro ...

  9. GO语言基础之reflect反射

    反射reflection 1. 反射可以大大的提高程序的灵活性,使得 interface{} 有更大的发挥余地 2. 反射使用 TypeOf 和 ValueOf 函数从接口中获取目标对象信息 3. 反 ...

  10. (转)[Unity3D]UI方案及制作细节(NGUI/EZGUI/原生UI系统) 内附unused-assets清除实例

    转载请留下本文原始链接,谢谢.本文会不定期更新维护,最近更新于2013.09.17.   http://blog.sina.com.cn/s/blog_5b6cb9500101bplv.html   ...