2017-02-22 156 views
-2

我有一種情況,像Client1向client2發送數據,並從那裏將數據發送到Server.Now從服務器將數據發送到其他多個客戶端。如何知道客戶端是否斷開連接或不在服務器/客戶端?

因此,現在當客戶端1連接到客戶端2,並在發送一些 數據後,如果客戶端1斷開連接如何知道客戶端1在客戶端2中斷開連接 ?

我的客戶端1的代碼片段是:

   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); 

我的客戶端2的代碼片段是:現在

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); 

,如果客戶端1被連接到客戶端2和一段時間後,它斷開如何知道客戶端1得到在client2中斷開連接?

我已經使用isConnected(), isbound(), isClosed()isReachable(int timeout)方法。但他們都沒有幫助我。

+0

你的問題沒有意義。沒有人連接到任何東西。你正在使用UDP。這是一個無連接協議。 'isConnected()'和朋友不會告訴你有關連接狀態的任何信息,只有你的套接字。不要對沒有引用的文本使用引號格式。 – EJP

回答

2

JavaDoc forDatagramPacket說:

數據報包用來實現一個無連接分組 送貨服務。

無連接協議沒有可以關閉的連接。如果您在UDP/DatagramPacket之上構建自己的協議,請將它作爲協議的一部分來「關閉」會話。

+0

謝謝。我忘了UDP連接少了。我的錯.. –

相關問題