2012-12-09 253 views
0

所以我试图建立一个客户端< - >服务器连接。我一直得到最讨厌的错误,因为客户端和服务器无法连接,但只发“CPC”有一次,我打电话当客户端连接到服务器时,Java Socket - 服务器到客户端的连接重置

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); 
} 

回答

0

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

+0

print()是一个函数。编辑后。 – KeirDavis