2017-02-22 7 views
-2

私は、Client1がclient2にデータを送信し、そこからデータがServer.Nowに送信され、サーバーからデータが他の複数のクライアントに送信されるような状況があります。クライアントがサーバー/クライアント側で切断されているかどうかを確認する方法はありますか?

これで、Client1がclient2に接続され、データを送信した後、client1がクライアント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); 

、CLIENT1は、クライアント2に接続されますと、いくつかの時間後に、それが持っているCLIENT1を知る方法を切断した場合クライアント2で切断されましたか?

私は既にisConnected(), isbound(), isClosed()isReachable(int timeout)の方法を使用しています。しかし、彼らのどれも私を助けませんでした。

+0

あなたの質問は理にかなっていません。誰も何にも接続していません。あなたはUDPを使用しています。これはコネクションレスなプロトコルです。 'isConnected()'と友人は接続の状態については何も教えてくれません。あなたのソケットだけです。引用符で囲まれていないテキストには引用形式を使用しないでください。 – EJP

答えて

2

JavaDoc forDatagramPacketは言う:

データグラムパケットが接続パケット 配信サービスを実装するために使用されています。

接続できないプロトコルには接続できない接続がありません。 UDP/DatagramPacketの上に独自のプロトコルを構築する場合は、それをプロトコルの一部にしてセッションを '閉じる'ようにします。

+0

ありがとうございます。私はUDPが接続が少ないことを忘れていました。私の悪い.. –

関連する問題