这是我写的一个聊天室程序的服务器端。
但是在运行时遇到问题,只能接收一个客户端的连接。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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货