private void close(){
try {
jTextArea_Msg.append("服务器关闭........");
jButton_Stat.setEnabled(true);
server.close();
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
java.net.SocketException: socket closed
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(Unknown Source)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at org.server.ServerMain.run(ServerMain.java:243)
at java.lang.Thread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.server.ServerMain.close(ServerMain.java:262)
at org.server.ServerMain.access$2(ServerMain.java:257)
try {
jTextArea_Msg.append("服务器关闭........");
jButton_Stat.setEnabled(true);
server.close();
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
java.net.SocketException: socket closed
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(Unknown Source)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at org.server.ServerMain.run(ServerMain.java:243)
at java.lang.Thread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.server.ServerMain.close(ServerMain.java:262)
at org.server.ServerMain.access$2(ServerMain.java:257)
in.close();
out.close(); 第一句已经都关了,你后面就不用关了
或者把顺序换一下
in.close();
out.close();
server.close();
try {
jTextArea_Msg.append("服务器关闭........");
jButton_Stat.setEnabled(true);
in.close(); 261行
out.close();
socket.close();
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}这样也出异常
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.server.ServerMain.close(ServerMain.java:261)
at org.server.ServerMain.access$2(ServerMain.java:257)
at org.server.ServerMain$3.actionPerformed(ServerMain.java:163)
private void Start(){
try {
server = new ServerSocket(port);
jTextArea_Msg.append("服务器启动"+"\n");
jButton_Stat.setEnabled(false);
} catch (IOException e) {
e.printStackTrace();
}
trd.start(); 启动线程
}
public void run() {
while(!flag && !server.isClosed()){
try {
socket = server.accept();
System.out.println("ok............");
out = new ObjectOutputStream(socket.getOutputStream());
out.flush();
in = new ObjectInputStream(socket.getInputStream());
ServerMain.jTextArea_User.append(in.readObject().toString());
new ServerReceive(in,socket).start();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
private void close(){
try {
//trd.stop(); 加上这句,关闭不出异常了,但在启动就启动不了了
trd.interrupt(); 加上这句,还是出异常 jTextArea_Msg.append("服务器关闭........");
jButton_Stat.setEnabled(true);
//in.close();
//out.close();
//socket.close(); 上面3个不注释掉,就出现空指针异常 server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
while(!flag && !server.isClosed()){
try {
socket = server.accept(); 249行
out = new ObjectOutputStream(socket.getOutputStream());
out.flush();
in = new ObjectInputStream(socket.getInputStream());
ServerMain.jTextArea_User.append(in.readObject().toString());
new ServerReceive(in,socket).start();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
//----------------关闭服务器-------------//
private void close(){
try {
flag = true;
ServerReceive.flag = true;
jTextArea_Msg.append("服务器关闭........"+"\n");
jButton_Stat.setEnabled(true);
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}java.net.SocketException: socket closed
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(Unknown Source)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at org.server.ServerMain.run(ServerMain.java:249)
at java.lang.Thread.run(Unknown Source)