Я хочу отправить String - «HelloWorld», используя ObjectInputStream от клиента к серверу. Сервер получит «HelloWorld» и распечатает его на консоли.отправка строки с использованием ObjectInputStream. Ошибка: OptionalDataException
Оба они соединены между собой на локальный и порт 4445.
я получил сообщение об ошибке на стороне сервера
Error: java.io.OptionalDataException
Client.java
private ObjectOutputStream output;
private ObjectInputStream input;
@Override
public void run() {
try {
socket = new Socket("localhost",4445);
output = new ObjectOutputStream(socket.getOutputStream());
input = new ObjectInputStream(socket.getInputStream());
output.writeChars("HelloWorld");
output.flush();
}
}
Server.java
private ObjectOutputStream output;
private ObjectInputStream input;
private Object message;
@Override
public void run() {
try {
output = new ObjectOutputStream(socket.getOutputStream());
input = new ObjectInputStream(socket.getInputStream());
while(true) {
try {
message =(String)input.readObject();
System.out.println(message);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}catch(IOException exception) {
System.out.println("Error: " + exception);
}
Я прочитал на эту ошибку, и она утверждает, что это будет сгенерировано исключение, когда
An attempt was made to read an object when the next element in the stream is
primitive data. In this case, the OptionalDataException's length field is set
to the number of bytes of primitive data immediately readable from the stream,
and the eof field is set to false.
Я совсем потерял после прочтения этого объяснения, так это значит, что вы не можете отправить строковый тип данных с помощью ObjectInputStream?
Возможный дубликат [OptionalDataException в java] (http://stackoverflow.com/questions/8630494/optionaldataexception-in-java) – alfasin
@alfasin Я думаю, что это не дубликат ссылки, которую вы дали , В этом случае OP не понимает, что writeChars не записывает объект. –