您的位置:程序门 -> java -> j2se / 基础类



socket  关闭出异常


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


socket 关闭出异常
发表于:2008-01-14 12:31:32 楼主
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)
发表于:2008-01-14 12:43:571楼 得分:0
server.close();  
in.close();  
out.close();  

第一句已经都关了,你后面就不用关了
或者把顺序换一下
in.close();  
out.close();  
server.close();  

发表于:2008-01-14 13:31:412楼 得分:0
关闭顺序是从最小的关道最大的。
发表于:2008-01-14 14:25:073楼 得分:0
哦................
发表于:2008-01-14 14:29:084楼 得分:0
private   void   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)
发表于:2008-01-14 14:40:215楼 得分:0
下面是完整代码

什么问题,在代码里有注释

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();
}
}
发表于:2008-01-14 15:17:356楼 得分:0
  //----------------端口监听-------------//
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)
发表于:2008-01-14 15:36:177楼 得分:0
该回复于2008-01-15 10:00:52被管理员删除


快速检索

最新资讯
热门点击