2013-03-18 21 views
6

İlk - İngilizce için özür dilerim, "yerli yazar" değilim.Android'de yayın mesajı al

C++ 'da yayın mesajı gönderiyorum ve Android cihazında almak istiyorum. Ben standart java SE konsol uygulaması olarak derlemek ve ağa bağlı diğer bilgisayarda çalıştırıldığında

System.out.println("receiveBroadcast()"); 
    DatagramSocket socket = new DatagramSocket(3866); 
    socket.setBroadcast(true); 
    System.out.println("Listen on " + socket.getLocalAddress() + " from " + socket.getInetAddress() + " port " + socket.getBroadcast()); 
    byte[] buf = new byte[512]; 
    DatagramPacket packet = new DatagramPacket(buf, buf.length); 
    while (true) { 
     System.out.println("Waiting for data"); 
     socket.receive(packet); 
     System.out.println(packet.getAddress()); 
     System.out.println("Data received"); 
    } 

Çalışıyor: Tür kodu yarattı. Android'de çalışmıyor ve nedenini bilmiyorum. Android'de bu sadece veri bekler ama aldığı asla:

Ben "/ dinleme :: boş liman gerçek dan" yerine, Windows sistem altında standart bir Java konsol uygulama olarak çalıştırın zaman ilginç, ne
03-18 15:47:05.045: I/System.out(16651): receiveBroadcast() 
03-18 15:47:05.055: I/System.out(16651): Listen on /:: from null port true 
03-18 15:47:05.065: I/System.out(16651): Waiting for data 

"null portundan 0.0.0.0/0.0.0.0 dinle".

Ben tezahür izinler var:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/> 

, yardım edin!

+0

Buna bakın - http://code.google.com/p/boxeeremote/wiki/AndroidUDP. Çalışırsanız, gelecekteki ziyaretçiler için kendi sorunuzu cevaplayabilirsiniz. – Shade

+0

Bağlantı için teşekkürler. Bunu ayrıntılı olarak yazdım ama maalesef sorunumu çözecek bir tavsiyem yok. Bu Java kodunu, kablosuz iletişim kullanan başka bir bilgisayarda denedim ve orada da çalışıyor. Elbette sorun Android'de, ancak hala nasıl çözüleceğini bilmiyorum. –

+0

Bağlantıdan getBroadcastAddress yöntemini uyguladınız mı? Bence problemin bağlanması gereken adresi elde etmek. Android telefonların genellikle en az iki arayüze sahip olduğunu unutmayın - WiFi ve mobil. – Shade

cevap

0

Bunun eski bir iş parçacığı olduğunu biliyorum, ancak bunu gelecekte de başkalarına yardımcı olabileceğinden paylaştığımı düşündüm. cihazınız ile os bağlıdır olarak

ünlü kod bana ne ben öneriyorum 2 çözüm için işe yaramadı here yazılı zaten siz bu çözümlerden bazılarını denemek isteyebilirsiniz

:

o hareketsizlik yayın mesajları bl bazı durumlarda olduğu gibi

WifiManager wifi; 
wifi = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 
WifiManager.MulticastLock mLock = wifi.createMulticastLock("lock"); 
mLock.acquire(); 

2- onay bu bağlantıyı here bir süre sonra devre dışı bırakılamaz diye

1- , Kablosuz ağınızda bir kilit oluşturmak OS tarafından denetlenen