socket服务端-多线程
2014-01-12 22:21
211 查看
package test.socket; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class ThreadEchoServer { public static void main(String[] args) { int i=1; try { ServerSocket serverSocket=new ServerSocket(8189); while(true) { Socket socket=serverSocket.accept(); System.out.println("子线程:"+i); Runnable r=new ThreadEchoHandler(socket); Thread t=new Thread(r); t.start(); i++; } } catch (IOException e) { e.printStackTrace(); } } }
package test.socket; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; /** * @author Administrator *socket多线程服务端处理类 */ public class ThreadEchoHandler implements Runnable { private Socket incoming; public ThreadEchoHandler(Socket i) { incoming=i; } @Override public void run() { try { try { InputStream inStream=incoming.getInputStream(); OutputStream outStream=incoming.getOutputStream(); Scanner scanner=new Scanner(inStream); PrintWriter writer=new PrintWriter(outStream,true); writer.println("输入BYE离开!!!"); //回写、打印客户端输入 boolean done=false; while(!done&&scanner.hasNextLine()) { String line=scanner.nextLine(); System.out.println(line); if(line.trim().toUpperCase().equals("BYE")) { done=true; } } } catch(Exception ex) { ex.printStackTrace(); } finally { incoming.close(); } } catch(Exception ex) { ex.printStackTrace(); } } }
相关文章推荐
- Switch-Case例子
- Java中实现浮点数的快速简单格式化
- 第一次android小组会
- 利用SetConsoleTextAttribute函数设置控制台颜色
- Scrapy UnicodeDecodeError解决方法
- Android屏幕适配
- Storm集群安装部署步骤【详细版】
- C++之私有继承
- matlab中调用Libsvm
- Win7 VMware Workstation 10.0.1 安装 Ubuntu 12.04
- Android开发之adb
- 博客之我感
- spring+mybatis时会出现Cannot load JDBC driver class
- C++之私有继承
- 信号之abort函数
- 小白之《测试工程师应聘之路》
- 传智学习日志篇:六
- Opencv2系列学习笔记12(检测fast特征)
- C语言面向对象编程(一):封装与继承
- HDU 1050(贪心)