пишу простенький клиент и сервер на 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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть несколько карточек, они частично лежат друг на другеКак сделать так чтобы при наведении на карточку она появлялась перед всеми карточками...