2017-02-22 5 views
-2

У меня такая ситуация, как Client1 отправляет данные клиенту2, и оттуда данные отправляются на сервер. Теперь с сервера данные отправляются другим нескольким клиентам.Как узнать, отключен ли клиент или нет на стороне сервера/клиента?

Итак, теперь, когда Client1 подключен к клиенту2 и после отправки данных , если клиент1 отключает, как узнать, что клиент1 отключен в client2?

Мой Client1 фрагмент кода:

   InetAddress address = InetAddress.getByName(ipAddress); 
       MulticastSocket socket = new MulticastSocket(port); 
       socket.joinGroup(address);//join a Multicast group and send the group salutations 
       byte[] data; 
       System.out.print("Enter data: "); 
       String str = (br.readLine()); 
       DatagramPacket packet; 
       //send the packet 
       data = new byte[1024]; 
       data = str.getBytes(); 
       packet = new DatagramPacket(data,str.length(),address,port); 
       socket.send(packet); 

Мой Client2 фрагмент кода:

InetAddress address = InetAddress.getByName(ipAddress); 
    byte[] data = new byte[1024]; 
    DatagramPacket packet = new DatagramPacket(data,data.length); 
    MulticastSocket socket = new MulticastSocket(port); 
    socket.joinGroup(address);//join a Multicast group and send the group salutations 
    // receive the packets 
    socket.receive(packet); 
    str = new String(packet.getData(),0,packet.getLength()); 
    System.out.println(ipname+" with portnumber "+port + " sent : "+str); 

Теперь, если client1 подключается к CLIENT2 и через некоторое время он разъединяет, как знать, что client1 получил отключен в client2?

Я уже использовал isConnected(), isbound(), isClosed(), а также isReachable(int timeout) методов. Но никто из них не помог мне.

+0

Ваш вопрос не имеет смысла. Никто не связан ни с чем. Вы используете UDP. Это протокол без установления соединения. 'isConnected()', и друзья ничего не сообщают вам о состоянии соединения, только о вашем сокете. Не используйте форматирование цитаты для текста, который не цитируется. – EJP

ответ

2

JavaDoc forDatagramPacket говорит:

Датаграмные пакеты используются для реализации пакетов без установления соединения службы доставки.

Протокол без установления соединения не имеет соединения, которое может быть закрыто. Если вы создаете собственный протокол поверх UDP/DatagramPacket, сделайте его частью своего протокола, чтобы закрыть сеанс.

+0

Спасибо. Я забыл, что UDP - это соединение меньше. Виноват.. –

Смежные вопросы