簡體   English   中英

Java套接字-當客戶端連接到服務器時,服務器與客戶端之間的連接重置

[英]Java Socket - Connection Reset in Server to Client when Client connects to Server

因此,我正在嘗試建立客戶端<->服務器連接。 我一直收到最煩人的錯誤,因為客戶端和服務器將無法連接,而僅在我致電時發送“ cpc”一次

print("cpc");

這是我正在使用的代碼。 這包含在擴展Thread的類中。

BufferedReader in = null;
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine, outputLine;
print("cpc");
try{
    while ((inputLine = in.readLine()) != null) {
        outputLine = process(inputLine);
        if (!outputLine.equals("")){
            print(outputLine);
        }

    }
} catch (Exception e){
    e.printStackTrace();
}

在“ while(((inputLine = in.readLine())!= null){”所在的位置存在錯誤。

如果您需要它,這是錯誤。

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at javaclient.Client.run(Client.java:28)

這是print()代碼

public void print(String s){
    out.println(s);
}

您正在閱讀線路,但未發送線路。 嘗試使用println()而不是print()。 “連接重置”的最常見原因是您已寫入已被對等方關閉的連接。 通常,您不是在該寫入中得到它,而是在隨后的讀取或寫入中得到它。 基本上,這是一個應用程序協議錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM