您的位置:首页 > 编程语言 > Java开发

java多线程模拟聊天问题

2015-12-10 23:14 363 查看
sever和Client1通信没有问题。如果在new出来同样一个client2再去和server通信,就client2的信息就无法发到server端了????

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();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: