动手编写Java NIO Socket测试工具

最近一年接触到些使用Java NIO编写的服务器程序,客户程序通过建立Socket连接并发送消息的方式调用服务端提供的交易接口。

开发的时候通常需要发些消息来调试程序,所以自己动手写了个工具。工具使用Swing编写,主要作用就是向指定的IP、端口发送请求消息,并接收响应消息。非常简单,但是足够了。

源代码涉及到以下内容:

(1)Java Swing编程中的EDT线程与任务线程,在后台任务线程中执行耗时操作,并在适当的时候更新UI;

(2)提供一种Swing界面的构造方式:构造Component、加载数据、添加Listener;

(3)GridBagLayout使用;

(4)使用TitledBorder创建类似于GroupBox效果的控件;

(5)通用的UIUpdater类,供后台线程更新UI,解耦合后台线程和UI Component(可以更加完善);

(6)因为Swing API大多不是线程安全的,所以将所有对UI的更新都放到EDT线程,包括Main函数中创建顶层JFrame的代码;

(6)NIO SocketChannel发送和接收消息;

(7)不知道消息长度的情况下,循环读取写入的整个消息;

运行界面如图:

源代码和Jar包下面附件,同时提供一个简单的EchoServer。

点击下载

时间: 2024-12-18 18:50:48

动手编写Java NIO Socket测试工具的相关文章

java NIO socket 通信实例

java Nio 通信与Bio通信主要不同点: 1.Nio中的单个channel即可支持读操作也可以支持写操作,而bio中读操作要用inputstream,写操作要outputstream. 2.nio 采用byteBuffer 作为内存缓存区,向channel里写或者度操作,bio基本是用byte[] 3.nio采用 selector组件轮询读取就绪channel 服务端demo代码: package com.my.socket3; import java.io.ByteArrayOutput

Java nio socket与as3 socket(粘包解码)连接的应用实例

对Java nio socket与as3 socket连接的简单应用 <ignore_js_op>Java nio socket与as3 socket连接的应用实例.rar (9.61 KB, 下载次数: 1691) 这个从基本的弄起太复杂了,我弄个了mina与flash通信的,通信数据模式是dataLength+data(数据长度+数据内容),对于socket字节流通信,我习惯用这种方式,方便粘包解码处理.其中已包含所需的jar包,客户端代码须另自写,不可沿用.flash socket发送的

第一次编写简单的中间件测试工具(2) - 读代码的方法

加入新员工训练营的有开发也有测试,大家的coding水平参差不齐. 我发现一个问题,就是当面对一个新学的语言时,我们这期训练营里除了我以外所有的测试人员甚至一些开发人员都不会读代码,不知道怎么去读,或者虽然读了,却一知半解,毫无效率. 首先分享一下我读代码的方法供从手工测试转自动化测试的同学们参考(可能各人思维模式不同,仅供参考): 我读代码时的思维方式属于一级一级严密的逻辑思维,所以一旦我的逻辑链中间断掉,我就不能理解这些代码. 一句话总结:先跑起来,再调试,理解原理,掌握细节. 第一步,看有

第一次编写简单的中间件测试工具(1) - 记一次新员工训练营

去年11月,我加入了N记,紧接着进入新员工训练营. 开始一次简单的中间件测试工具编写任务. 这次训练营体验给我的感觉就是:大公司不愧是大公司,这回我终于可以安心学点核心技术了. 任务: 这个训练营有两个任务,一是熟悉这边的敏捷开发流程:二是在训练营里做一定的编码,用python编写一个测试工具(桩,stub). 我们要做的这个工具,是用来测试我们一种通信设备(B)上运行的程序(某种中间件),这个工具模拟另一种通信设备(A),发送一些按特定协议编码的消息给另一种通信设备B,并能反编码设备B返回的消

java nio socket

jdk供的无阻塞I/O(NIO)有效解决了多线程服务器存在的线程开销问题,但在使用上略显得复杂一些.在NIO中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个CPU的处理能力和处理中的等待时间,达到提高服务能力的目的. 这段时间在研究NIO,写篇博客来记住学过的东西.还是从最简单的Hello World开始, client多线程请求server端,server接收client的名字,并返回Hello! +名字的字符格式给client.当然实际应用

Java Nio Socket通讯

Server端: #############服务器端连接请求处理############### public class MultiplexerServer implements Runnable { /**多路复用器,SocketChannel注册到Selector.Selector轮询监听Channel网络事件*/ private Selector selector; private ServerSocketChannel serverSocketChannel; private boole

ActiveMQ测试工具

1. 测试工具 目前使用两种测试工具进行压力测试 1. Jmeter 测试单客户端收发多主题,测试高并发,大数据量时的接收效率 2. emqtt_benchmark测试多客户端收发主题,测试高吞吐量下服务器性能 1.1 安装Erlang emqtt_benchmark测试工具使用Erlang语言开发,必须在Linux的环境下运行,因此需要先安装Erlang语言环境. 1.1.1 安装Erlang 可以参考这篇帖子,使安装别的特别简单. 1.1.2 安装问题 没有安装git,比如出现以下错误: E

通过Tomcat的Http11NioProtocol源码学习Java NIO设计

Tomcat的Http11NioProtocol协议使用Java NIO技术实现高性能Web服务器.本文通过分析Http11NioProtocol源码来学习Java NIO的使用.从中可以了解到阻塞IO和非阻塞IO的配合,NIO的读写操作以及Selector.wakeup的使用. 1. 初始化阶段 Java NIO服务器端实现的第一步是开启一个新的ServerSocketChannel对象.Http11NioProtocol的实现也不例外, 在NioEndPoint类的init方法可以看到这段代

Java NIO、NIO.2学习笔记

相关学习资料 http://www.molotang.com/articles/903.html http://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html 目录 1. NIO.NIO.2简介 2. NIO中的关键技术 1. NIO.NIO.2简介 Java中的输入流.输出流都是阻塞式的输入.输出.不仅如此,传统的输入流.输出流都是通过字节的移动来处理的(即使是字符流,在底层也是通过字节流来进行处理的),也就是说,面向