2016-04-03 22 views
0

Java yuva programlama konusunda yeniyim ve şu anda birden çok istemcinin birbiriyle sohbet etmesine izin veren UDP sohbet odası uygulamasını eşleştirmek için küçük bir eş geliştiriyorum.Java eşler arası udp sohbet odası

Sorum şu: Bir istemci, bağlı istemcilerinden yalnızca birini ve bağlantı noktasını sağlayan bağlantı düğmesine bastığında, diğer tüm bağlı istemcileri nasıl keşfedebilir? Program sadece yerel ağda çalışır.

+0

Bir liste kullanmayı ve onu her yeni müşteriye aktarmayı denedim.Sonra işe yaramadı. – Omar

cevap

1

Sen (muhtemelen kullandığınız) IPv4 üzerinde broadcasting

yayın için adres 255.255.255.255 olduğu UDP benzersiz bir özelliği kullanabilirsiniz. Bu adrese gönderilen herhangi bir datagram, bu port için ağdaki tüm UDP istemcilerine gönderilecektir.

Sohbet uygulamanız için yapabilecekleriniz, her bir kullanıcının, kullanıcının takma adı gibi kendisini tanımlayan UDP yayınına bir paket göndermesini sağlamaktır. Diğer tüm müşteriler bu paketi görecek ve paketi ayrıştıracak ve ağdaki tüm sohbet istemcilerin listesini görüntüleyebileceksiniz.

DatagramSocket s = new DatagramSocket(); 
    s.setBroadcast(true); 
    DatagramPacket dp = new DatagramPacket("insert data here".getBytes(), "insert data here".length(), new InetSocketAddress("255.255.255.255", 5000)); 
    s.send(dp); 

Başka bir kullanıcı bu gibi alabilir: İşte

yayın için bir Datagram göndererek bir örnektir

DatagramSocket s = new DatagramSocket(); 
s.setBroadcast(true); 
DatagramPacket dp = new DatagramPacket(new byte[1024], 1024); 
s.receive(dp); 

alınan datagram paketleri IP ve müşterinin port içerecektir kim yayınladı.

+0

Teşekkür ederim. Bunu deneyeceğim. – Omar

+0

@Omar ile ilgili sorularınız varsa lütfen bize bildirin. – jython234

0

Basit bir olasılık, her müşterinin bildiği diğer eşleri depolaması ve listeyi bağlanan tüm yeni istemcilere aktarması olabilir.

İlgili konular