Java套接字 - 当客户端连接到服务器时,服务器到客户端的连接重置

时间:2012-12-09 19:45:55

标签: java client serversocket

所以我正在尝试设置客户端< - >服务器连接。我一直收到最烦人的错误,因为客户端和服务器无法连接但只在我打电话时发送一次“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);
}

1 个答案:

答案 0 :(得分:0)

你正在读行,但你没有发送行。尝试println()而不是print()。 “连接重置”的最常见原因是您已写入已由对等方关闭的连接。你通常不会在写入时获得它,而是在随后的读或写中获得它。基本上它是一个应用程序协议错误。