Artikel ini melaksanakan cara menerima siaran UDP daripada PC pada telefon mudah alih anda.
Mari kita selesaikan dahulu pelaksanaan kod di bahagian PC., yang sangat mudah.
private final ScheduledExecutorService askService= Executors.newSingleThreadScheduledExecutor();
public void runWaitConnectThead(){ askService.scheduleAtFixedRate(this::sendAskMessage, 0, boardCastConfig.getWAIT_MS(), TimeUnit.MILLISECONDS); } protected void sendAskMessage(){ byte[] message = this.hostName.getBytes(); try (DatagramSocket datagramSocket = new DatagramSocket()) { datagramSocket.setBroadcast(true); InetAddress boardcastAddr = InetAddress.getByName("255.255.255.255"); DatagramPacket datagramPacket = new DatagramPacket(message, message.length, boardcastAddr, 1885); datagramSocket.send(datagramPacket); } catch (IOException e) { System.out.println("Error: " + e.getMessage()); } }
Dalam blok kod kedua di atas, askService akan bermula serta-merta(param kedua) dan akan terus melaksanakan fungsi "sendAskMessage()", yang memancarkan paket UDP, setiap milisaat boardCastConfig.getWAIT_MS(). Dalam kod saya, ia berulang setiap 5s.
Kini, anda telah mencapai kejayaan 50%.
Sebelum menulis kod penerimaan kami, kami perlu menambahkan beberapa kebenaran dalam fail AndroidMnifest.xml atau aplikasi anda tidak akan dapat dijalankan.
Berikut adalah kebenarannya:
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"></uses-permission>
Kemudian mari kita cipta perkhidmatan dalam MainActivity, dan laksanakan kod penerimaan kita di dalamnya. Ngomong-ngomong, jangan lupa menambahkan perkhidmatan ini dalam fail AndroidManifest.xml.
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent waitBoardCastService=new Intent(this, WaitBoardCastService.class); startService(waitBoardCastService); } }
<service android:name=".on_wait.WaitBoardCastService"></service>
Kemudian kita boleh menyelesaikan kod penerimaan kita. Ia mengandungi dua bahagian.
①buat benang baharu(saya tidak menunjukkannya dalam kod saya, tetapi itu sangat penting, anda tidak boleh memulakan aplikasi anda jika anda meninggalkan operasi rangkaian dalam utas utama)
②mendapatkan kunci multicast(langkah ini amat penting, tanpa ini, anda tidak boleh menerima paket UDP)
③menerima paket UDP
WifiManager wifi =(WifiManager)getSystemService(MyApplication.WIFI_SERVICE); WifiManager.MulticastLock lock = wifi.createMulticastLock("any_tag"); lock.acquire(); try { DatagramSocket socket = new DatagramSocket(1885); byte[] receiveData = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); Log.v("hello","waiting"); socket.receive(receivePacket); String receiveMessage = new String(receivePacket.getData(), 0,receivePacket.getLength()); Log.v("hello","received!"); socket.close(); } catch (IOException e) { Toast.makeText(MyApplication.getContext(), "NetWork Error",Toast.LENGTH_LONG).show(); } finally { lock.release(); }
Hasil saya:
Atas ialah kandungan terperinci Terima Siaran UDP daripada PC pada Android. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Menyelesaikan integral ganda di bawah sistem koordinat Polar Artikel ini akan menjawab soalan mengenai integral berganda di bawah koordinat polar secara terperinci. Persoalannya memberikan kawasan titik dan diperbadankan ...

Bagaimana untuk memastikan keunikan tugas skrip dan memantau status operasi mereka dalam persekitaran konvensional yang tinggi? Artikel ini akan meneroka cara memastikan kaki keluar dalam persekitaran kluster ...

Mengenai bagaimana subkelas menetapkan sifat peribadi dengan mewarisi kaedah setname kelas induk. Dalam pengaturcaraan, terutamanya dalam bahasa pengaturcaraan berorientasikan objek seperti Java, subclass dan ...

Bagaimana untuk menyelesaikan masalah kegagalan pengesahan nama pengguna dan kata laluan ketika menyambung ke EMQX tempatan menggunakan MQTTasyncClient Eclipsepaho? Menggunakan Java dan Eclipse ...

Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Menjana kod QR Applet WeChat dengan parameter di Java dan memaparkannya pada halaman HTML adalah keperluan umum. Artikel ini akan membincangkan secara terperinci cara menggunakan ...

Penyegerakan negeri antara panggilan pelbagai muka Java: Mendengarkan kesan antara muka A pada antara muka B dalam pembangunan Java, anda sering menghadapi situasi di mana beberapa antara muka perlu dipanggil pada masa yang sama ...

Perbincangan mengenai arahan yang disusun semula di bawah benang tunggal di Java dalam pengaturcaraan Java, pengajaran semula adalah topik yang sama. Arahan menyusun semula merujuk kepada pengkompil dan pemproses ...


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).