关于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();
}
}
} 展开
服务器代码:
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();
}
}
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询