在上一篇里面讲讲了一个简单测试例子,今天讲一个比较靠近实际的应用的例子 remotecmd(在包com.susu.test.nio.remotecmd),远程命令行。测试程序设计思想,在在客户端输入一个命令,发送给服务器执行,然后服务器把执行结果返回给客户端显示。程序流程如下:
1.写一个CmdLine类实现两个功能一个是做为客户端从控制台读取命令,一个功能是作为服务器执行命令返回执行结果。
2.编写几个重要的类服务器输入过滤器 ,客户端输入过滤器,和输出过滤器,客户端和服务器端的启动类。
3.服务启动在9000进行监听
4.客户端连接服务器的9000端口,当客户端连接成功既框架回调ClientInputFilter的onCreateSession方法,在这个方法里面new一个 CmdLine类,从控制台读取数据,都到数据以后通过session发送给服务器执行。
5.服务器在接收到客户端连接以后 既框架回调ServerInputFilter的onCreateSession方法,在这个方法里面建new一个 CmdLine类(这里只是写简单的测试程序,如果有多个客户端连接上来的话,这里显然就有问题) ,服务器在onReceiveMessage里面收到数据时,调 CmdLine类的execCmd方法执行收到的命令,并吧执行结果发送回客户点。
6.客户端收到服务器的执行结果 onReceiveMessage方法里面进行显示执行结果。
下面就是测试类的代码实现:
CmdLine.java
ClientInputFilter.java
ServerInputFilter.java
TestOutputFilter.java
ServerTest.java
ClientTest.java