以下是一个聊天室的服务器端。用户连接服务器后,主函数中的“newMult(socket);”给用户创建一条新线程,为他服务。“in”是用户发过来的字符串,用“out”给用户返回他刚才说的话。问...
以下是一个聊天室的服务器端。用户连接服务器后,主函数中的“new Mult(socket);”给用户创建一条新线程,为他服务。“in”是用户发过来的字符串,用“out”给用户返回他刚才说的话。
问题是,我原打算用“out”把用户乙说的话也返回给甲,但是不管用,甲的窗口上不显示其他人说的话,只显示他自己说的话。
请大家帮我出出主意,修改修改。谢谢!
import java.io.*;
import java.net.*;
class Mult extends Thread{//新的线程
private Socket socket;
private BufferedReader in;
public PrintWriter out;
public Mult(Socket s)throws IOException{
socket = s;
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
start();
}
public void run(){
try{
String msgin=null;
while(true){
msgin=in.readLine();//等待用户说话
if(msgin.equals("END"))
break;
System.out.println(msgin);//服务器上显示用户说的话
out.println(msgin);//把用户说的话返回给他自己
}
System.out.println("closing...");
}
catch(IOException e){
}
finally{
try{
socket.close();
}
catch(IOException e){
}
}
}
}
public class ChatServerMulti{
static final int PORT =4321;
public static void main(String[] args) throws IOException{
ServerSocket s = new ServerSocket(PORT);
int tn=1;
System.out.println("Server Started");
try{
while(true){
Socket socket = s.accept();//监听连接
try{
if(tn<20){//最大20人同时连接
new Mult(socket);//给用户创建新线程
tn++;
}
}
catch(IOException e){
socket.close();
}
}
}
finally{
s.close();
}
}
}
展开