实例说明:
使用BIO模型编写一个服务器端,监听6000端口,当有客户端连接时,就启动一个线程与之通讯。
要求使用线程池机制改善,可以连接多个客户端.
服务器端可以接收客户端发送的数据(telnet 方式)。
import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class BIOserver { public static void main(String[] args)throws Exception { ExecutorService newCachedThreadPool = Executors.newCachedThreadPool(); //创建serverSecket ServerSocket serverSocket = new ServerSocket(6000); System.out.print("服务器启动了"); while (true){ //监听,等待客户端连接 final Socket socket = serverSocket.accept(); System.out.print("连接到一个客户端"); //创建一个线程 newCachedThreadPool.execute(new Runnable() { @Override public void run() { //重写 //可以和客户端通信 handler(socket); } }); } } //编写一个handler方法,和客户端通讯 public static void handler(Socket socket){ try { byte[] bytes = new byte[1024]; //通过Socket获取输入流 InputStream inputStream = socket.getInputStream(); while (true){ int read = inputStream.read(bytes); if(read!=-1){ System.out.println(new java.lang.String(bytes,0,read));//输出客户端发送数据 }else { break; } } }catch (Exception e){ e.printStackTrace(); }finally{ System.out.println("关闭和client的连接"); try{ socket.close(); }catch (Exception e){ e.printStackTrace(); } } } }
启动后,打开cmd窗口 输入telnet 127.0.0.1 6000
进入telnet 按下Ctrl+]键,发送命令:send 111,服务端就可以收到111信息
原文地址:https://www.cnblogs.com/yangzhixue/p/12331686.html
时间: 2024-10-24 07:54:05