javaNIO学习笔记二
2017-03-12 10:31
232 查看
传统IO加线程池
加了线程池的服务端可以连接多个客户端
第一步
输入命令cmd 打开控制台,输入 telnet 127.0.0.1 10101连接上服务端。
按ctrl+] 打开回显,输入send hello发送消息1
第二步
输入命令cmd 打开控制台,输入 telnet 127.0.0.1 10101连接上服务端。
按ctrl+] 打开回显,输入send hello2发送消息2
第三步
这时,发现服务端没有阻塞,可以接收到两个消息。
1.telnet命令,(ps 要开启 windows功能)
2.输入ctrl+]
3.从客户端发送命令到服务端send hello1
4. 重复123操作,即可完成上图
加了线程池的服务端可以连接多个客户端
第一步
输入命令cmd 打开控制台,输入 telnet 127.0.0.1 10101连接上服务端。
按ctrl+] 打开回显,输入send hello发送消息1
第二步
输入命令cmd 打开控制台,输入 telnet 127.0.0.1 10101连接上服务端。
按ctrl+] 打开回显,输入send hello2发送消息2
第三步
这时,发现服务端没有阻塞,可以接收到两个消息。
package OIO; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 传统socket服务端 * @author -琴兽- * */ public class OioServer { //telnet 127.0.0.1 10101 //@SuppressWarnings("resource") public static void main1(String[] args) throws Exception { ExecutorService newCachedThreadPool = Executors.newCachedThreadPool(); //创建socket服务,监听10101端口 ServerSocket server=new ServerSocket(10101); System.out.println("服务器启动!"); while(true){ //获取一个套接字(阻塞) final Socket socket = server.accept(); System.out.println("来个一个新客户端!"); newCachedThreadPool.execute(new Runnable() { @Override public void run() { //业务处理 handler(socket); } }); } } /** * 读取数据 * @param socket * @throws Exception */ public static void handler(Socket socket){ try { byte[] bytes = new byte[1024]; InputStream inputStream = socket.getInputStream(); while(true){ //读取数据(阻塞) int read = inputStream.read(bytes); if(read != -1){ System.out.println(new String(bytes, 0, read)); }else{ break; } } } catch (Exception e) { e.printStackTrace(); }finally{ try { System.out.println("socket关闭"); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
1.telnet命令,(ps 要开启 windows功能)
2.输入ctrl+]
3.从客户端发送命令到服务端send hello1
4. 重复123操作,即可完成上图
相关文章推荐
- javaNIO学习笔记一
- javaNIO学习笔记之缓冲区Buffer
- JSP标记学习笔记
- C#学习笔记(四)
- Win32学习笔记 第三章 HelloWin
- 开发asp.net自定义控件(asp.net学习笔记五)
- Win32学习笔记 第四章 输出文本_2
- Microsoft Agent 学习笔记 (一)
- 《Mastering Delphi 6》学习笔记之七
- 开发asp.net自定义控件(asp.net学习笔记四)
- Win32学习笔记 第一章 开始
- 我的Dll(动态链接库)学习笔记
- c++入门学习笔记继承
- Win32学习笔记 第一章
- Win32学习笔记 第二章
- c++入门学习笔记指针篇
- 一个C++程序员的Delphi学习笔记
- 开发asp.net自定义控件(asp.net学习笔记二)
- 开发asp.net自定义控件(asp.net学习笔记三)
- STL的内观排序(introsort)算法学习笔记