Я получил здесь клиентские и серверные программы.Клиент обращается к серверу, отправляя строку, затем сервер преобразует строку в заглавные буквы и отправляет обратно.Проблема в том, что клиент не получает никакой строки с сервера.Только сервер печатает 2, переданные в строках, затем сервер выдает IOException.Я думаю, потому что клиент закрыл соединение.Но почему клиент не получает сообщения от сервера?Как преодолеть эту проблему?Спасибо
Client:
package solutions;
import java.io.*;
import java.net.*;
class SocketExampleClient {
public static void main(String [] args) throws Exception {
String host = "localhost"; // hostname of server
int port = 5678; // port of server
Socket s = new Socket(host, port);
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
DataInputStream dis = new DataInputStream(s.getInputStream());
dos.writeUTF("Hello World!");
System.out.println(dis.readUTF());
dos.writeUTF("Happy new year!");
System.out.println(dis.readUTF());
dos.writeUTF("What's the problem?!");
System.out.println(dis.readUTF());
}
}
Сервер:
package solutions;
import java.io.*;
import java.net.*;
class SocketExampleServer {
public static void main(String [] args) throws Exception {
int port = 5678;
ServerSocket ss = new ServerSocket(port);
System.out.println("Waiting incoming connection...");
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(s.getInputStream());
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
String x = null;
try {
while ((x = dis.readUTF()) != null) {
System.out.println(x);
dos.writeUTF(x.toUpperCase());
}
}
catch(IOException e) {
System.err.println("Client closed its connection.");
}
}
}
Вывод:
Waiting incoming connection...
Hello World!
Happy new year!
What's the problem?!
Client closed its connection.