【发布时间】:2013-09-24 16:59:12
【问题描述】:
如果我先启动服务器然后客户端一切正常,但是当我先启动客户端然后服务器(确保客户端能够在 svr 崩溃然后再次上线时连接)客户端确实连接到服务器,但在 2.3 秒后它会抛出一个 SocketException:连接重置。我不知道是什么原因造成的,如果有人能帮我解决这个问题,我真的很感激。
处理客户端的服务器代码:
public ServerHandler(Socket socket){
try{
pw = new PrintWriter(socket.getOutputStream());
writerHolder[userCounter] = pw;
InputStreamReader in = new InputStreamReader(socket.getInputStream());
reader = new BufferedReader(in);
userCounter++;// Increment the number of people connected
}catch(Exception ex)
{
ex.printStackTrace();
}
}
连接到服务器的客户端代码:
private void startConnection()
{
try
{
sock = new Socket("192.168.1.5", 5000);
InputStreamReader input = new InputStreamReader(sock.getInputStream());
reader = new BufferedReader(input);
pw = new PrintWriter(sock.getOutputStream());
JOptionPane.showMessageDialog(null, "Connected to the server!");
}catch(IOException ex)
{
//timer.reconnectTimer(20);
ex.printStackTrace();
}
}
堆栈跟踪:
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 homeControl.ServerHandler.run(ServerHandler.java:52)
at java.lang.Thread.run(Unknown Source)
【问题讨论】:
-
ServerHandler.java:52在哪里?另外,我没有看到任何readLine电话。 -
谁抛出异常,服务器还是客户端?
-
@Pietu1998 这只是一个代码 sn-p。
-
@user2794550 好吧,但是如果您不发布所有代码,包括引发异常的行,您认为我们如何调试您的代码?
-
@user2794550 您不能指望我们阅读您的其他问题。 “有关您编写的代码问题的问题必须在问题本身中描述具体问题 - 并包括有效的代码来重现它。”编辑:我去了你的另一个问题,仍然找不到有问题的代码。