Я новичок в Java. Пожалуйста, извините меня, если вы найдете это очень простым вопросом. В переполнении стека уже есть много ответов по этому поводу, и я прошел почти все возможные подсказки, которые я могу получить в переполнении стека, а также на некоторых других форумах. К сожалению, ни один из них мне не помог.
У меня есть программа клиент / сервер, в которой клиент отправляет строку на сервер, а сервер просто присоединяет другую строку к строке, отправленной клиентом, и отправляет ее обратно клиенту.
Серверная программа выглядит так.
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class server {
public static void main(String[] args) {
try
{
ServerSocket server = new ServerSocket(7300);
Socket s = server.accept();
DataInputStream inp = new DataInputStream(s.getInputStream());
DataOutputStream out = new DataOutputStream(s.getOutputStream());
String str =inp.readUTF();
str = str+" buddy!";
out.writeUTF(str);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
Клиент выглядит так.
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.*;
public class client {
public static void main(String[] args) {
try
{
Socket s = new Socket("192.168.1.3",7300);
DataInputStream inp = new DataInputStream(s.getInputStream());
DataOutputStream out = new DataOutputStream(s.getOutputStream());
out.writeUTF("hi");
System.out.println(inp.readUTF());
Thread.sleep(2000);
out.writeUTF("hello");
System.out.println(inp.readUTF());
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
Все работает нормально, пока клиент пишет «привет», а когда клиент начинает посылать «привет», я получаю сообщение об ошибке сброса соединения. Я не понимаю, какую ошибку делаю, пожалуйста, помогите мне решить эту проблему.
Вывод с ошибкой, которую я получаю, выглядит следующим образом.
hi buddy!
java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.DataOutputStream.write(Unknown Source)
at java.io.DataOutputStream.writeUTF(Unknown Source)
at java.io.DataOutputStream.writeUTF(Unknown Source)
at sokry.client.main(client.java:18)