GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menyiarkan Pesan menggunakan soket UDP secara lokal?

Server tidak boleh terikat ke alamat yang Anda dapatkan dari getaddrinfo , melainkan harus terikat ke 127.255.255.255 (untuk antarmuka loopback).

Untuk contoh server/klien siaran yang sudah jadi, lihat http://www.ccplusplus.com/2011/09/udp-broadcast-client-server-example.html


Soket domain Unix tidak mendukung multi-/penyiaran.

Anda dapat menyiarkan di antarmuka lokal 127.0.0.1.


Meskipun pertanyaan awal tidak secara eksplisit mengatakannya, saya yakin penanya ingin 'menyiarkan' ke beberapa aplikasi yang berjalan pada contoh sistem operasi yang sama (komputer yang sama ke timer lama).

Ini didukung oleh penggunaan 'SO_REUSEADDR' dalam contoh pendengar, dan komentar tindak lanjut oleh Yuvi, dan terakhir saran untuk menggunakan multicast IP.

Pertanyaan awal harus diklarifikasi.

Saya percaya distribusi paket dengan banyak pengikat pada satu port UDP bervariasi antara sistem operasi saat menggunakan SO_REUSEADDR. Pengalaman saya pada Windows baru-baru ini, adalah bahwa satu 'pengikat' secara eksklusif diberikan semua paket sampai dia melepaskan ikatannya, pada saat itu, yang lain pengikat dipilih dan disajikan semua paket yang diterima, sampai dia melepaskan, dan seterusnya...

Ini tampaknya berbeda dari kernel Linux terbaru, seperti yang dijelaskan dalam tautan ini:https://stackoverflow.com/a/14388707/86375Halaman itu tampaknya mengklaim Linux akan melakukan round-robin menerima paket antara beberapa pengikat.

Hasil akhirnya, jika Anda berharap untuk mengirim-ke-banyak menggunakan satu datagram terkirim seperti yang dilakukan poster aslinya, dan Anda mencoba menggunakan IP unicast, bukan IP multicast, Anda mungkin kecewa. (Pengalaman saya, dan tautannya di atas menunjukkan Anda dapat melakukan multi-bind, tetapi itu tidak berarti multi-pengiriman dari datagram yang diterima, baik di Linux maupun Windows)

Poster asli seharusnya mencoba menggunakan multicast.


Linux
  1. Bagaimana Cara Ssh Ke Server Menggunakan Server Lain??

  2. CentOS / RHEL 6:Cara mengatur repositori yum menggunakan DVD yang dipasang secara lokal

  3. Bagaimana seharusnya strace digunakan?

  1. Bagaimana cara menggunakan dos2unix?

  2. Bagaimana cara melanjutkan sesi secara lokal yang telah dimulai dari jarak jauh menggunakan xrdp?

  3. Haruskah saya berhenti menggunakan Ifconfig?

  1. Bagaimana Cara Mengirim Pesan Xmpp Menggunakan Command-line?

  2. Cara Melacak Skrip Python menggunakan trace.py

  3. Berapa banyak Linux yang harus saya pelajari untuk menerapkan situs web menggunakan LAMP?