Я только что начал с программирования сокетов, поэтому, чтобы улучшить свое понимание этого, я хочу построить приложение с несколькими клиентами. запуск, который собирается создать новый клиент и автоматически подключиться к серверу. src = "https://i.sstatic.net/a15iq.jpg" /> < /p>
Это то, что когда я пытаюсь прослушать и отправлять на клиенте и сервер, я получаю эти ошибки. < /p>
java.net.SocketException: Connection reset
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:186)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:200)
at java.base/java.io.DataInputStream.readUnsignedShort(DataInputStream.java:342)
at java.base/java.io.DataInputStream.readUTF(DataInputStream.java:594)
at java.base/java.io.DataInputStream.readUTF(DataInputStream.java:569)
at parctice.Server.lambda$main$0(Server.java:32)
at java.base/java.lang.Thread.run(Thread.java:835)
< /code>
Это мой сервер: < /p>
int port = 4444;
try {
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("server starts port = " + serverSocket.getLocalSocketAddress());
while(true){
Socket socket = serverSocket.accept();
System.out.println("accepts : " + socket.getRemoteSocketAddress());
DataInputStream in = new DataInputStream(socket.getInputStream());
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
String[] message = {""};
new Thread(() -> {
try {
while(in.available() > 0){
System.out.println("SERVER > " + in.readUTF());
message[0] = in.readUTF();
}
} catch (IOException e) {
e.printStackTrace();
}
}).start();
System.err.println(message[0]);
try {
out.writeUTF(message[0] + "REDIRECTED MESSAGE");
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
< /code>
и мой клиент: < /p>
int portNumber = 4444;
System.out.println("CLIENT > Trying to connect to the server...");
try {
Socket socket = new Socket("localhost", portNumber);
DataInputStream in = new DataInputStream(socket.getInputStream());
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
new Thread(() -> {
try {
while(in.available() > 0){
System.out.println("SERVER > " + in.readUTF());
}
} catch (IOException e) {
e.printStackTrace();
}
}).start();
try {
out.writeUTF("test");
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
< /code>
В конце концов я хотел бы спросить вас, ребята, думаете ли вы, что логика, которую я пытаюсь использовать, является правильной, и если нет, дайте мне знать, что случилось, а также, если возможно, вы можете объяснить мне, почему я не могу слушать и отправлять на клиенте и сервере? Потому что, когда я пытаюсь отправлять данные через клиента и извлекать их на сервер, это работает просто отлично, но я хотел бы выполнить общее общение.
Подробнее здесь: https://stackoverflow.com/questions/564 ... on-in-java