把服务器端写在了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在启线程呢?