从客户端java读取数据时发生连接重置错误
我正在使用Java套接字开发客户机-服务器应用程序。我的应用程序有一个服务器,它将侦听端口从客户端java读取数据时发生连接重置错误,java,sockets,Java,Sockets,我正在使用Java套接字开发客户机-服务器应用程序。我的应用程序有一个服务器,它将侦听端口 客户端将连接到该端口 从客户端接收数据 向客户端发送数据 我代码的一部分 public void run() { System.out.println("Got a client !"); try { // Get Data From Client int red = -1; byte[] buffer = new byte[5 * 10
- 客户端将连接到该端口
- 从客户端接收数据
- 向客户端发送数据
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))的数组内容代码>然后发生错误
有几个可能的原因
另一端故意重设了连接,以一种我不喜欢的方式
不会在这里记录。这是罕见的,而且通常是不正确的
应用软件可以做到这一点,但商业应用并不陌生
软件
更常见的情况是,它是由写入另一个
末端已正常关闭。换句话说,就是一个应用程序
协议错误
在Windows中,“软件导致连接中止”,这是不同的
由于“连接重置”,是由于从您的
结束。有一篇关于这方面的微软知识库文章
您是否关闭了服务器端的连接?查看异常的可能原因:之前访问的链接。。。是因为在向客户端发送数据后,我的客户端关闭了与服务器的连接,因此我在
循环时出错了吗?我的服务器没有关闭与客户端的连接尝试使用BufferedInputStream实例并在循环条件下使用它。只是为了确定是否有更基本的套接字程序适用于您?我是说这是你的第一个套接字程序吗?