пишу простенький клиент и сервер на UDP, по заданию в клиенте необходимо использовать DatagramChannel, т.к. UDP протокол не надёжен, то при отправке сообщений сервер обязательно должен отсылать сообщения об ответе, немного не пойму, как правильно реализовать, чтобы клиент бесконечно не ждал пакетов от сервера, пример запроса прилагаю:
channel = DatagramChannel.open();
// channel.socket().setSoTimeout(timeout);
address = new InetSocketAddress(hostname, port);
//channel.configureBlocking(false);
channel.connect(address);
public ServerMessage doRequest(String command, Alice argument)throws IOException, ClassNotFoundException{
try {
ClientMessage message = new ClientMessage(command, argument);
sendedstreambuffer = new ByteArrayOutputStream();
sendedstream = new ObjectOutputStream(sendedstreambuffer);
sendedstream.writeObject(message);
sendedstream.flush();
ByteBuffer buffer = ByteBuffer.wrap(sendedstreambuffer.toByteArray());
buffer.flip();
channel.send(buffer, address);
buffer.clear();
channel.receive(buffer);
receivedsteam = new ObjectInputStream(new ByteArrayInputStream(buffer.array()));
return (ServerMessage) receivedsteam.readObject();
}catch (PortUnreachableException e){
return new ServerMessage(SpecialMessage.TIMEOUT, "===\nСервер не доступен.");
}
}
Так же не могли бы вы подсказать, как мне от DatagramChannel принимать пакеты с помощью DatagramSocket
Продвижение своими сайтами как стратегия роста и независимости