java多线程模拟聊天问题
2015-12-10 23:14
363 查看
sever和Client1通信没有问题。如果在new出来同样一个client2再去和server通信,就client2的信息就无法发到server端了????
[img=http://img.bbs.csdn.net/upload/201512/10/1449760039_769049.png][/img]
[img=http://img.bbs.csdn.net/upload/201512/10/1449759893_851115.png][/img]
import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { ServerSocket server= new ServerSocket(8818); Socket socket= server.accept(); System.out.println("服务器端准备就绪"); String name ="server="; new Thread(new ThreadSend(socket,name)).start(); new Thread(new ThreadRec(socket,name)).start(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
import java.io.IOException;![]()
import java.net.Socket; import java.net.UnknownHostException; public class Client1 { public static void main(String[] args) { try { Socket socket= new Socket("localhost",8818); System.out.println("客户端一准备就绪"); String name ="client1="; new Thread(new ThreadSend(socket,name)).start(); new Thread(new ThreadRec(socket,name)).start(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; import java.util.Scanner; public class ThreadSend implements Runnable{ private Socket socket; private String name; public ThreadSend(Socket socket, String name) { super(); this.socket = socket; this.name = name; } public void run() { // TODO Auto-generated method stub try { OutputStream os= socket.getOutputStream(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); while(true){ System.out.println(name+"开始通信,请输入"); String str = new Scanner(System.in).next(); str=name+""+str; bw.write(str); bw.newLine(); bw.flush(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.Socket; public class ThreadRec implements Runnable { private Socket socket; private String name; public ThreadRec(Socket socket,String name) { super(); this.socket = socket; this.name = name; } public void run() { // TODO Auto-generated method stub InputStream is; try { is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); while(true){ String msg=br.readLine(); System.out.println(name+""+msg); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
[img=http://img.bbs.csdn.net/upload/201512/10/1449760039_769049.png][/img]
[img=http://img.bbs.csdn.net/upload/201512/10/1449759893_851115.png][/img]
import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; public class Client2 { public static void main(String[] args) { try { Socket socket = new Socket("localhost",8818); System.out.println("客户端二准备就绪"); String name ="clien2="; new Thread(new ThreadSend(socket,name)).start(); new Thread(new ThreadRec(socket,name)).start(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- JAVA面向对象
- Java线程2-3 时间调度的线程池ScheduledThreadPool
- Struts2框架学习之三:result返回结果
- Spring配置文件所有类型的数据源dataSource
- java web 答辩总结
- java.lang.IndexOutOfBoundsException 错误解决
- Java线程2-2 固定大小的线程池FixedThreadPool
- Java线程2-1 线程池知识学习
- java中的原子类
- java运算符
- struts常见面试题目
- spring常见面试题目
- eclipse jetty插件的安装
- Java并发编程:volatile关键字解析
- Java回炉之排序算法
- java并发编程--同步队列器初探
- java 集合
- JAVA 路径问题
- Java回炉之反射(一)
- 史上最全的SpringMVC学习笔记