关于java多线程socket局域网聊天的问题

我写了服务器和客户端,服务器能接受多个客户端传来的消息,但是只能返回给第一个,其他的都没有反应,请问这是为什么?服务器代码:publicclassServerUI{pub... 我写了服务器和客户端,服务器能接受多个客户端传来的消息,但是只能返回给第一个,其他的都没有反应,请问这是为什么?
服务器代码:
public class ServerUI {
public static int num=0;
public static Socket[] sockets=new Socket[100];
public static void main(String[] args) throws Exception
{

// ServerUI serverUI=new ServerUI();
ServerSocket soc=new ServerSocket(9999);
while (true) {//服务器一直处于开启状态,每个客户端都有一个线程产生
Socket socket=soc.accept();
sockets[num++]=socket;
new serverchat(sockets[num]).run();
}
}

}
class serverchat extends Thread{
Socket socket;
public serverchat(Socket socket)
{
this.socket=socket;
}

public void run(){
try{
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String clientString=null;
while ( (clientString=in.readLine()) !=null) {
for(int i=0;i<ServerUI.num;i++)//遍历所有与服务器链接的客户端
{
System.out.println(clientString+"\n");
PrintStream printStream=new PrintStream(ServerUI.sockets[i].getOutputStream());
printStream.println(clientString);
}

}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
展开
 我来答
linzhi566
2014-12-08 · 超过24用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:37.5万
展开全部
new serverchat(sockets[num]).run(); 这个可不是多线程的使用方法啊。改为new serverchat(sockets[num]).start();
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式