菜鸟修炼,多客户端Thread
来源:互联网 发布:瓶中船的制作材料淘宝 编辑:程序博客网 时间:2024/04/30 10:42
路过不要错过哦,跪求犇人意见到来!
ChatServer类,模拟多客户端的服务端,代码:
package com.bzu.test;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class ChatServer {public static void main(String[] args)throws IOException {ServerSocket serverSocket=new ServerSocket(9999);int number=1;//保存客户端个数while(true){Socket socket=serverSocket.accept();System.out.println("客户端"+number+"链接成功!");//服务端开启一个独立的线程,来对客户端读写操作new Thread(new ServerStream(socket, number)).start();number++;}}}
ServerStream类,模拟服务端线程控制,代码:
package com.bzu.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import javax.xml.ws.handler.MessageContext.Scope;public class ServerStream implements Runnable {private Socket socket=null;private int number;public ServerStream(Socket socket, int number) {super();this.socket = socket;this.number = number;}@Overridepublic void run() {try {BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter pw=new PrintWriter(socket.getOutputStream(),true);while(true){String line=br.readLine();System.out.println("客户端"+number+":"+line);pw.println(line.toUpperCase());if(line.equals("bye")){System.out.println("客户端"+number+"已经断开链接");break;}}br.close();pw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
ChatClient类,模拟客户端控制,代码:
package com.bzu.test;import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;public class ChatClient {public static void main(String[] args) throws IOException {Socket socket=new Socket("127.0.0.1", 9999);new Thread(new ClientInputStream(socket)).start();new Thread(new ClientOutputStream(socket)).start();}}
ClientInputStream类,线程类:
package com.bzu.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;import java.net.SocketException;public class ClientInputStream implements Runnable { private Socket socket=null;public ClientInputStream(Socket socket) {super();this.socket = socket;}@Overridepublic void run() {try {BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));while(true){try {String line=br.readLine();System.out.println(line);} catch (SocketException e) {break;}}br.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
ClientOutputStream类,模拟输出,代码:
</pre><pre name="code" class="java">package com.bzu.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class ClientOutputStream implements Runnable {private Socket socket=null;public ClientOutputStream(Socket socket) {super();this.socket = socket;}@Overridepublic void run() {try {BufferedReader br=new BufferedReader(new InputStreamReader(System.in));PrintWriter pw=new PrintWriter(socket.getOutputStream(),true);while(true){String line=br.readLine();pw.println(line);if(line.equals("bye")){break;}}br.close();pw.close();socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
1 0
- 菜鸟修炼,多客户端Thread
- 菜鸟的修炼
- android菜鸟修炼记
- 菜鸟的JAVA修炼历程:
- 菜鸟进级修炼中
- 菜鸟修炼必经之道~
- 菜鸟的修炼之路
- 菜鸟修炼记之起飞心
- Thread类实现多个客户端连接服务端
- 菜鸟修炼C语言小设计之——通讯录
- 一只菜鸟的Java个人修炼浅见
- [IT老兵修炼计]1.菜鸟到大牛的设计思路
- 菜鸟修炼中,URL的两种访问方式
- Spring小白到菜鸟修炼之基本概念(1)
- Spring小白到菜鸟修炼之基本概念(2)
- 【mysql 修炼之路】如何从菜鸟成为mysql 大神?
- [JAVA修炼之路三]-JAVA Thread 方法
- 并发编程修炼三:Thread类的使用
- Dr. Elephant大象医生安装文档
- c++-作业6
- OpenGL学习脚印: 二维纹理映射(2D textures)
- C++ 将String类作为包含类
- EasyDarwin开源流媒体服务器gettimeofday性能优化(3000万/秒次优化至8000万次/秒)
- 菜鸟修炼,多客户端Thread
- 约数倍数选卡片---博弈论
- JAVA设计模式(24):创建型-工厂模式【工厂方法模式】(Factory Method)
- 关于window.open被拦截那些事
- 详解交换两个数的值
- Linux系统小知识汇总
- spring-boot(5) 的logback 整理
- 快速排序
- servlet的执行原理与生命周期