从客户端java读取数据时连接重置错误[重复]
Posted
技术标签:
【中文标题】从客户端java读取数据时连接重置错误[重复]【英文标题】:Connection reset error when reading data from client java [duplicate] 【发布时间】:2013-08-27 13:14:39 【问题描述】:我正在使用 Java Socket 开发客户端-服务器应用程序。我的应用程序有服务器,它将监听端口
客户端将连接到该端口 从客户端接收数据 向客户端发送数据我的代码的一部分
public void run()
System.out.println("Got a client !");
try
// Get Data From Client
int red = -1;
byte[] buffer = new byte[5 * 1024]; // a read buffer of 5KiB
byte[] redData;
StringBuilder clientData = new StringBuilder();
String redDataText;
while ((red = clientSocket.getInputStream().read(buffer)) > -1)
/* Get Data From Client Here Code Hidden */
System.out.println("Data From Client :"
+ clientData.toString());
OutputStream out = clientSocket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
String sDataToClient = "TEST DATA TO SEND IN BYTE ARRAY";
byte[] b = sDataToClient.getBytes("UTF-8");
byte[] bClientSend = new byte[b.length + 2];
bClientSend[0] = (byte) 1;
bClientSend[1] = (byte) 79;
System.arraycopy(b, 0, bClientSend, 2, b.length);
dos.write(bClientSend);
System.out.println(Arrays.toString(bClientSend));
clientSocket.close();
catch (IOException e)
e.printStackTrace();
在以下行将数据发送到客户端后,我得到java.net.SocketException: Connection reset
while ((red = clientSocket.getInputStream().read(buffer)) > -1)
我可以看到System.out.println(Arrays.toString(bClientSend));
的数组内容然后出现错误
【问题讨论】:
你关闭服务器端的连接了吗?查看异常的可能原因:***.com/questions/62929/… 之前访问过的链接...是因为在向客户端发送数据后我的客户端关闭了与服务器的连接,因此我在while
循环中出现错误?
我的服务器没有关闭与客户端的连接
尝试使用 BufferedInputStream 实例并在循环条件中使用它。
只是为了确定一个更基本的套接字程序是否适合您?我的意思是这是你的第一个套接字程序吗?
【参考方案1】:
Quoting a duplicate post
有几种可能的原因。
另一端故意重置了连接,在某种程度上,我 不会在这里记录。这是罕见的,而且通常是不正确的,因为 应用软件可以做到这一点,但对于商业来说并不陌生 软件。
更常见的是,它是由写入一个连接导致另一个 end 已经正常关闭。换句话说,一个应用程序 协议错误。
在 Windows 中,“软件导致连接中止”,这是不一样的 作为“连接重置”,是由您发送的网络问题引起的 结尾。有一篇关于此的 Microsoft 知识库文章。
【讨论】:
以上是关于从客户端java读取数据时连接重置错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章
nginx tomcat7 错误:-“从上游读取响应标头时,recv() 失败(104:对等连接重置)”
AWS ElasticBeanstalk NodeJS-502错误:从上游读取响应头时,recv()失败(104:对等连接重置)
http 403 错误 +“readv() 在读取上游时失败(104:对等方重置连接)”