Я пытаюсь реализовать клиентский сервер в Java, где я читаю входные данные в клиенте, выполняю UperCase на сервере, возвращаюсь к клиенту и печатаю UperCase.Я использовал ObjectOutputStream и ObjectInputStream для чтения и записи, но когда я набираю сообщение в моем клиенте, моя программа показывает мне следующие ошибки:
Digite uma msg casa java.io.EOFException at java.io.DataInputStream.readUnsignedShort (Неизвестный источник) в java.io.ObjectInputStream $ BlockDataInputStream.readUnsignedShort (Неизвестный источник) в java.io.ObjectInputStream $ BlockDataInputStream.readUTF (Неизвестный источник) в java.io.Oreadjava.Client.main (Client.java:32)
Моя клиентская сторона это:
package Client.java;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
//estabelece conexao
// trocar msg com o server
try {
//cria conexao entre client e servidor
Socket socket = new Socket("localhost",5558);
//cria input and output
ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
Scanner scan = new Scanner(System.in);
System.out.println("Digite uma msg");
String word = scan.nextLine();
output.writeUTF(word);
output.flush();
word = input.readUTF();
System.out.println("Upercase"+ word);
input.close();
output.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
, и это моя серверная сторона:
package Server;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.ServerSocket;
public class Servidor {
private ServerSocket servidor;
private void criarServerSocket(int porta) throws IOException {
servidor = new ServerSocket(porta);
}
private Socket esperaConexao() throws IOException
{
Socket socket = servidor.accept();
return socket;
}
private void fechaSocket(Socket s) throws IOException {
s.close();
}
private void trataConexao(Socket socket) throws IOException {
//*recebe e envia msg */
try {
ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
String msg = input.readUTF();
output.writeObject(msg.toUpperCase());
output.flush();
input.close();
output.close();
} catch (IOException e) {
// TODO Auto-generated catch block
}
fechaSocket(socket);
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Servidor server = new Servidor();
System.out.println("Wait for a connection");
server.criarServerSocket(5558);
System.out.println("Conectado ");
Socket socket = server.esperaConexao();
server.trataConexao(socket);
}
}
Это потому, что мой сервер закрывает поток?и как я мог это исправить и при этом закрыть поток?Спасибо за любую помощь.