这是我写的一个聊天室程序的服务器端。
但是在运行时遇到问题,只能接收一个客户端的连接。System.out.println("test.");这行一直运行不到。
程序好像在st = new ServerThread(client);这行就直接跳到了ServerThread线程中去运行。
根本不运行主程序剩下的部分。而且更诡异的是,貌似st.start();这行都没有运行,线程就启动了。因为在它上面的一行输出指令一直没有运行。
请各位达人指教,谢谢!
package Chat;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class ServerPC{
public ServerPC(){
ServerSocket server = null;
try{
server = new ServerSocket(9999);
System.out.println("Server starts.");
}catch(Exception ex){} while(true){
Socket client = null;
Thread st =null;
try{
System.out.println("While loop starts.");
         client=server.accept(); 
     }catch(Exception ex){}
     System.out.println("Client: "+client.getInetAddress()+ " is connected.");
     st = new ServerThread(client);
     System.out.println("test.");
     st.start();
     //new SThread(client).start();
     System.out.println("SThread starts.");
}//while
}    public static void main (String [] args) throws Exception{
     new ServerPC();
    }//main
    
}//Server  class SThread extends Thread{
private Socket client;
private InputStream in;
private DataInputStream dis;
private OutputStream out;
private DataOutputStream dos;
private String nickName;
private String str;

public SThread(Socket skt) { 
client=skt; 
try{
in= client.getInputStream();
dis = new DataInputStream(in);
nickName = dis.readUTF();
System.out.println(nickName+" is login.");

out= client.getOutputStream();
dos = new DataOutputStream(out);
dos.writeUTF("Server: " + nickName+" is login.");
}catch(Exception ex){}
}
public void run(){
while(true){
try{
str = dis.readUTF();
System.out.println(nickName+": "+str);
dos.writeUTF(str);
}catch(Exception ex){}
}
}
}//SThread