我正在使用Java Socket开发Client-Server App。我的应用程序具有将在端口上侦听的服务器
我的代码的一部分
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();
}
}
我在以下行向客户发送数据后<{1}}
java.net.SocketException: Connection reset
我能够看到while ((red = clientSocket.getInputStream().read(buffer)) > -1) {
的数组内容然后发生错误
答案 0 :(得分:0)
有几种可能的原因。
另一端故意重置连接,以我的方式 不会在这里记录。这是罕见的,通常是不正确的 应用软件这样做,但商业上并不为人所知 软件
更常见的是,它是由写入另一个连接引起的 结束已经正常结束。换句话说,一个应用程序 协议错误。
在Windows中,&#39;软件导致连接中止&#39;,这是不一样的 因为&#39;连接重置&#39;,是由您的网络问题发送引起的 结束。有关于此的Microsoft知识库文章。