读书人

java聊天程序服务器端卡机?解决办法

发布时间: 2012-06-14 16:00:31 作者: rapoo

java聊天程序,服务器端卡机?
把服务器端写在了swing上,ServerSocket ss=new ServerSocket(8888)写在了一个线程里面,当第一次点击启动服务器时,提示已经连上,可是客户端确连不上来,再点击一次启动服务器,窗体卡死,但是客户端可以连接上来,为什么会是这样,怎么解决窗体卡死的问题??
start=new JMenuItem("启动服务器");
JMenuItem exit=new JMenuItem("退出");
menu.add(start);
menu.add(exit);


//start添加事件
start.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
// while(true){
start_service ss=new start_service();
Thread starts=new Thread(ss);
starts.start();
socketConn();
// }

}
});



public void socketConn(){

try {
while(service){
s=ss.accept();
System.out.println("客户端连接成功");
Client c=new Client(s);
clients.add(c);
new Thread(c).start();
int count=clients.size();
//在线人数在标签显示出来
String str=new Integer(count).toString();
label_count.setText(str);
}
} catch (IOException e) {
e.printStackTrace();
}


}



//服务器启动线程
private class start_service implements Runnable{

@Override
public void run() {

try {
System.out.println("线程启动");

ss=new ServerSocket(8888);
service=true;

//JOptionPane.showMessageDialog(ChatServer.this,"服务器启动成功");


} catch (IOException e) {
JOptionPane.showMessageDialog(ChatServer.this,"服务器已经连上");
System.exit(0);
}

}[code=Java][/code]

[解决办法]
.............启动一个线程去监听SOCKET?干嘛不 监听到一个SOCKET在启线程呢?

读书人网 >J2EE开发

热点推荐