java聊天室服务端的一个BUG

来源:百度知道 编辑:UC知道 时间:2024/06/16 09:05:52
最下面的是源代码。。
这BUG是,当我输入端口,启动服务端后,我想关了服务端,但按那个Frame上的红叉没用。。
请问,我应该如何做才能关闭这个程序。。

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.List;

public class talkServer extends Frame {
private List<Client> clients = new ArrayList<Client>();
Label lb = new Label("端口");
TextField tf = new TextField(10);
Button bt = new Button("启动");
boolean flag1 = false;
boolean flag2 = false;

public talkServer() {

setLayout(new FlowLayout());
add(lb);
add(tf);
add(bt);
pack();
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
flag1 = false;
flag2 = false;
System.exit(0);
}
});
bt.addActionListener(new ActionListener() {

public void actionP

你必须先ServerSocke。close(),DataInputStream。close(),
DataOutputStream。close(),
否则,你是关不了的。
记着多做多线程的程序。否则仅仅是个例子,没有任何价值。

上面那个老兄在胡扯哦~~~

是你自己没有给frame关闭动作。。。

在frame的继承类里面调用这个函数就行了,

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

机会结束整个进程,jvm会自动帮你关闭所有打开的连接,不过还是建议你自己先加个关闭的钩子,在钩子里面写上关闭资源的函数

Socket server = ss.accept();
这句有问题,它一直都无法等到连接的socket而处于阻塞状态。