关于Socket Connection reset 问题

问题描述

之前接触socket较少、有个问题想咨询大家一下谢谢、异常信息:java.net.SocketException:Connectionresetatjava.net.SocketInputStream.read(SocketInputStream.java:168)atsun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)atsun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)atsun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)atjava.io.InputStreamReader.read(InputStreamReader.java:167)atjava.io.BufferedReader.fill(BufferedReader.java:136)atjava.io.BufferedReader.readLine(BufferedReader.java:299)atjava.io.BufferedReader.readLine(BufferedReader.java:362)atobi.youyou.utils.Chat.run(Chat.java:41)相关代码:publicclassChatextendsThread{privateSocketsocket;publicChat(intcount,Socketsocket,List<Socket>socketList){this.socket=socket;}publicvoidrun(){BufferedReaderreader=null;PrintWriterwriter=null;try{reader=newBufferedReader(newInputStreamReader(socket.getInputStream()));Stringmessage="";SimpleDateFormatdf=newSimpleDateFormat("HH:mm:ss");//socket.setSoTimeout(10000);while(true){message=reader.readLine();========此处为41行=======//接收到客户端的bye信息,客户端即将退出,并将bye写入到该客户端if(null==message){SocketTest3Server.count--;System.out.println(SocketTest3Server.count+"null下线");SocketTest3Server.socketList.remove(socket);//newChat(count,socket,socketList).run();break;}//向所有的客户端发送接收到信息,实现群聊for(inti=0;i<SocketTest3Server.socketList.size();i++){writer=newPrintWriter(SocketTest3Server.socketList.get(i).getOutputStream());Stringusername=message.substring(0,message.indexOf("#$*"));Stringmessages=message.substring(message.indexOf("#$*")+3,message.length());messages=SensitiveUtils.doFilter(messages);writer.println("{"talk":{"username":""+username+"","time":""+df.format(newDate())+"","message":""+messages+""},"image":[]}");//System.out.println("{"talk":{"username":""+username+"","time":""+df.format(newDate())+"","message":""+messages+""},"image":[]}");writer.flush();}}}catch(Exceptione){SocketTest3Server.count--;System.out.println(SocketTest3Server.count+"Exception下线");SocketTest3Server.socketList.remove(socket);//newChat(SocketTest3Server.count,socket,SocketTest3Server.socketList).run();e.printStackTrace();}}}

解决方案

解决方案二:
LZ你得run()方法呢?貌似你都把它注释了吧,没有线程的start()方法你得群聊该怎么实现,程序该怎么跑。。。。
解决方案三:
java.net.SocketException:Connectionreset引起这个异常的原因有两个:一、客户端和服务器端如果一端的Socket被关闭,另一端仍发送数据,发送的第一个数据包引发该异常;二、客户端和服务器端一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常。简单来说就是在连接断开后的读和写操作引起的。你检查一下你的连接。
解决方案四:
默认的timeOut是多久?
解决方案五:
你要说清楚你程序的基本架构逻辑啊。。你这么一小段难以判断有什么问题,而且哪个是客户端哪个是服务器端也不太清晰另外ConnectionReset一般和网络配置也有很大关系,你要说清楚你的测试环境是怎样的,是同机器测试,不同机器同子网,还是不同子网等等详细情况。
解决方案六:
楼主参考一下这篇文章,希望解决你的问题!
解决方案七:
引用3楼shijing266的回复:

默认的timeOut是多久?

没设置
解决方案八:
引用5楼baohuan_love的回复:

楼主参考一下这篇文章,希望解决你的问题!

谢谢、已经参考过了的

时间: 2024-08-29 14:30:13

关于Socket Connection reset 问题的相关文章

android和pc端socket链接重置抛出:Connection reset

问题描述 android和pc端socket链接重置抛出:Connection reset 这个是android客户端的socket @Override public void run() { try { socket = new Socket(); System.out.println("body-->" + body); socket.connect(new InetSocketAddress(Constans.IP, Constans.PORT), Constans.TIM

Connection reset by peer: socket write error

问题描述 Connection reset by peer: socket write error Caused by: org.springframework.dao.DataAccessResourceFailureException: Error querying database. Cause: java.sql.SQLException: Io 异常: Connection reset by peer: socket write error The error may exist in

connection reset bypeer,服务器并发处理能力是可以的

问题描述 connection reset bypeer,服务器并发处理能力是可以的 测试运行在linux服务器上面的服务,当测试程序连接服务器的socket超过1000个,测试程序就会通过recv接收到"connection reset bypeer",服务器的并发能力是完全可以处理至少2000链接的,求大牛传授 解决方案 只能说明瓶颈不在你所谓的并发处理能力那里.所谓的"并发能力"你不能用系统中最富裕的那个资源去衡量. 解决方案二: 系统上还有其他限制,ulim

lvs-关于LVS+KeepAlived,出现Connection reset by peer

问题描述 关于LVS+KeepAlived,出现Connection reset by peer 我配置完LVS+KeepAlived之后(是一个socket服务的lvs集群),RS日志中总是不停的在出现java.io.IOException: Connection reset by peer错误 keepAlived配置如下: global_defs { lvs_id LVS_1 } vrrp_instance VI_1 { state MASTER interface eth0 lvs_sy

Connection reset by peer的常见原因

 Connection reset by peer的常见原因: 1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭:    如果知道实际连接服务器的并发客户数没有超过服务器的承载量,看下有没有网络流量异常.可以使用netstat -an查看网络连接情况. 2)客户端关掉了socket,而服务器还在给客户端发送数据:  这属于正常情况 3)防火牆的问题:    如果网络连接通过防火牆,而防火牆一般都会有超时的机制,在网络连接长时间不传输数据时,会关闭这个TCP的会话,关闭后在读写,就

java.net.SocketException: Connection reset 解决方法_java

自从SEOTcs系统11月份24日更新了一下SEO得分算法以来,一直困扰我的一个问题出现了,java的数据job任务,在执行过程中会经常报以下的错误: "2011-12-03 18:00:32 DefaultHttpClient [INFO] I/O exception (java.net.SocketException) caught when processing request: Connection reset by peer: socket write error2011-12-03

OGG-01232 Receive TCP params error: TCP/IP error 104 (Connection reset by peer), endpoint:

源端: 2015-02-05 17:45:49 INFO OGG-01815 Virtual Memory Facilities for: COM anon alloc: mmap(MAP_ANON) anon free: munmap file alloc: mmap(MAP_SHARED) file free: munmap target directories: /home/ggt/goldengate/dirtmp. CACHEMGR virtual memory values (may

Tomcat的SEVERE: Remote Host / SocketException: Connection reset原因分析及解决办法

昨天在测试帮助文件时发现一直打不开,好像是一直再刷新,于是就到服务器上查看Tomcat的日志,就发现了下面的信息:Apr 21, 2008 9:27:34 AM org.apache.tomcat.util.net.TcpWorkerThread runItSEVERE: Remote Host /172.16.128.248 SocketException: Connection reset并且这两条信息几乎是每个1-2秒就出现一次,很是频繁.于是就搜索了一下,就找到了下面的内容:The us

报错:Socket connection closed by the other side (how rude!)

最近,公司邮箱发送到另一家公司的时总会退信:Socket connection closed by the other side (how rude!).[插:安装MDaemon的版本是最新的12.x版本,降级成10.x的版本就可以正常收发].退信在用户的邮箱里,没传过来.查了一下smtp出的日志,具体截图如下: 从日志分析来看,我方服务器开启了tsl.想到这里,查看一下mdaemon的ssl设置情况,结果发现12版本默认 勾选 SMTP服务器尽可能使用STARTTLS的.取消勾选 SMTP服务