Я работаю над сетевым приложением, написанным на Java, используя ObjectOutputStream и ObjectInputStream поверх Sockets для обмена сообщениями.Мой код выглядит так:
Отправитель:
ObjectOutputStream out;
ObjectInputStream in;
try{
Socket socket=new Socket(address, port);
socket.setSoLinger(true, socketLingerTime);
out=new ObjectOutputStream(socket.getOutputStream());
out.writeObject(message);
out.flush();
out.close();
}catch (variousExceptions)...
Получатель:
Object incoming;
try{
incoming=myObjectInputStream.readObject();
}catch (SocketException socketError)
{
if (socketError.getMessage().equals("Connection reset"))
{
//this is the exception I get
}
}
Иногда сообщение проходит нормально, но в других случаях я получаю отмеченное исключение вместообъекта.Разве флеш не должен заставить сообщение перейти на другую сторону?Я как-то неправильно использую функцию?Или это какая-то ошибка в базовом сетевом коде Java / OS?
Спасибо!
ОБНОВЛЕНИЕ:
Я сделал еще несколько попыток слежки за этим, и этоКажется, что это происходит только тогда, когда ресурсы системы облагаются налогом.Я не смог воспроизвести его вне VirtualBox, но это может быть просто потому, что VirtualBox не имеет много ресурсов для начала.Я буду обновлять этот вопрос по мере его дальнейшего изучения.