socket closed

问题描述

privatevoidInit(){try{server=newServerSocket(Integer.valueOf(Source.getCfg("socket.port")));System.out.println("开始监听端口:【"+server.getLocalPort()+"】等待客户机连接....");exec=Executors.newFixedThreadPool(pool);while(!this.flag){Listen();}}catch(IOExceptionex){Logger.getLogger(_SocketListen.class.getName()).log(Level.SEVERE,null,ex);}}privatevoidListen()throwsIOException{Socketsocket=server.accept();//这里异常this.setNum(num++);this.setFlag(false);_SocketThreadt=ClassManager.get_SocketThread();t.setNum(this.num);t.setSocket(socket);exec.execute(t);}publicvoidClose(){try{this.setFlag(true);exec.shutdown();server.close();}catch(Exceptionex){Logger.getLogger(_SocketListen.class.getName()).log(Level.SEVERE,null,ex);}}现在服务端与客户端建立了连接但上面Close()一执行就出异常java.net.SocketException:socketclosed

解决方案

解决方案二:
检查端口在使用前是否有关闭操作.
解决方案三:
java.net.SocketException:socketclosedsocket关闭异常,调试下看,是不是server已经为null了。这种问题一般调试就能解决的
解决方案四:
引用1楼hpjianhua的回复:

检查端口在使用前是否有关闭操作.

在执行上面Close方法前有个下面方法里面的socket关闭操作但是不执行socket关闭操作也会出现异常,server.close();//这行注释掉就没异常了privatevoidListen()throwsIOException{Socketsocket=server.accept();//这里异常this.setNum(num++);this.setFlag(false);_SocketThreadt=ClassManager.get_SocketThread();t.setNum(this.num);t.setSocket(socket);exec.execute(t);}

解决方案五:
引用2楼xzy88的回复:

java.net.SocketException:socketclosedsocket关闭异常,调试下看,是不是server已经为null了。这种问题一般调试就能解决的

server=newServerSocket(Integer.valueOf(Source.getCfg("socket.port")));Socketsocket=server.accept();如果建立连接server会变成null?
解决方案六:
System.out.println(server.isClosed());结果为true而且server也不null
解决方案七:
把client的代码发上来,看是不是client的问题呢。。
解决方案八:
引用6楼liuzhengkang的回复:

把client的代码发上来,看是不是client的问题呢。。

publicclass_SocketClientextendsSwingWorkerimplementsjava.awt.event.ActionListener{privateSocketsocket;privateOutputStreamout;privateInputStreamin;privateTimert;privatevoidConnection()throwsException{socket=newSocket(MResource.getCfg("socket.ip"),Integer.valueOf(MResource.getCfg("socket.port")));if(socket.isConnected()){if(t!=null){t.stop();}System.out.println("OK"+socket);}}publicvoidClose(){try{if(socket!=null||socket.isConnected()){socket.close();}}catch(IOExceptionex){Logger.getLogger(_SocketClient.class.getName()).log(Level.SEVERE,null,ex);}}@OverrideprotectedObjectdoInBackground(){try{Connection();}catch(Exceptionex){//Logger.getLogger(_SocketClient.class.getName()).log(Level.SEVERE,null,ex);t=newTimer(2000,this);t.start();}return"";}publicvoidactionPerformed(ActionEvente){try{Connection();}catch(Exceptionex){//Logger.getLogger(_SocketClient.class.getName()).log(Level.SEVERE,null,ex);System.out.println("尝试连接....");}}}

解决方案九:
但上面Close()一执行就出异常java.net.SocketException:socketclosed客户端报java.net.SocketException:socketclosed是正常的

时间: 2024-09-19 01:03:52

socket closed的相关文章

socket编程发送消息出现socket closed求大神,急

问题描述 socket编程发送消息出现socket closed求大神,急 import java.io.DataInputStream; import java.io.EOFException; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { ServerSocket ss; Socket s ; Clients clients; Da

tomcat集群-TOMCAT 集群 socket closed 错误

问题描述 TOMCAT 集群 socket closed 错误 我在用APACHE配置TOMCAT 集群出现下面这个错误. WARNING: Error receiving mcast package. Sleeping 500ms java.net.SocketException: socket closed at java.net.PlainDatagramSocketImpl.receive0(Native Method) at java.net.PlainDatagramSocketIm

web-java.net.SocketException: socket closed

问题描述 java.net.SocketException: socket closed 返回的httpresponse 内容如下 HTTP/1.1 200 OK [Server: zhihu_nginx, Date: Sun, 29 Sep 2013 02:08:35 GMT, Content-Type: application/json, Transfer-Encoding: chunked, Connection: keep-alive, Vary: Accept-Encoding, Ex

java.net.SocketException: Socket closed

问题描述 java.net.SocketException:Socketclosedatjava.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99)atjava.net.SocketOutputStream.write(SocketOutputStream.java:136)atweblogic.servlet.internal.ChunkUtils.writeChunkTransfer(ChunkUtils.java:2

Silverlight Socket 实现收发信息

原文 http://www.cnblogs.com/ZetaChow/archive/2009/05/16/2237347.html 刚接触Silverlight的时候,除了其异步应用WCF.流媒体.动画效果等方面外,Socket是最另我兴奋的功能.   在Web上实现Socket虽然不是什么新鲜事了,Activex,flash等都可以实现这样的效果,但是Silverlight这样方便的运用Socket让服务器与客户端通信确是我之前没有体验过的.   用它可以做什么?可以连线式的让服务器与客户端

JAVA网络编程之Socket

在前面博客中使用到的HttpsURLConnection实际上是基于HTTP协议完成获取网络资源的,而HTTP协议又是基于TCP/IP协议的,这一片博客将介绍在java中如何使用TCP/IP协议进行服务端与客户端之间的通信. TCP/IP,Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP

Socket编程实战

Socket 在英文中的含义为"(连接两个物品的)凹槽",像the eye socket,意为"眼窝",此外还有"插座"的意思.在计算机科学中,socket 通常是指一个连接的两个端点,这里的连接可以是同一机器上的,像unix domain socket,也可以是不同机器上的,像network socket. 本文着重介绍现在用的最多的 network socket,包括其在网络模型中的位置.API 的编程范式.常见错误等方面,最后用 Pytho

php与flash as3 socket通信传送文件实现代码_php技巧

前段时间在flashseer看到有人提到:可以通过socket方式传送swf文件,让用户无法获取到swf文件- 当时还没有出as3的反编译,所以对程序的保护没有在意.随着反编译程序的平民化,不希望别人看到源代码的朋友就比较着急- 通过socket方式传送swf文件来避免泄漏源代码的思路(只适用as3): 让主程序的loader(前台swf)通过socket连接到后台程序,然后请求需要的主程序文件.后台读取主程序数据通过socket发送给主程序的 loader.前台swf适用Loader.load

Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!

随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如下图所示: 一.对Socket Server的要求 我们可以尝试让Socket Server透明地支持WebSocket客户端,所谓透明的意思是,服务端开发人员不用关心客户端究竟是什么类型,而是可以统一的接收数据.处理数据.发送数据.为了做到这一点,我们可以构建一个服务端框架,让框架完成透明化的工作