Saya memiliki perangkat yang tertanam di LAN saya dan aplikasi c++ di Linux di komputer. Saya telah membuat siaran UDP pada alamat siaran subnet saya dari C++ dan perangkat saya mengembalikan pesan dengan tanda tangan. Keduanya sekarang memiliki alamat IP satu sama lain. Saya perlu mengirim paket UDP dari C++ saya khusus ke IP perangkat saya. Panggilan awal ke perangkat saya dilakukan melalui UDP, tetapi menggunakan opsi siaran di opsi soket. Beberapa percobaan saya dengan alat pembuatan paket memberi saya kesan bahwa UDP menggunakan ID MAC untuk menemukan tujuan. Jadi metode apa yang harus digunakan di C++, jika saya ingin mengirim paket UDP ke IP spesifik di LAN saya? Terima kasih
Paket UDP ke IP Tertentu di LAN
Jawaban (3)
Berdasarkan respons Anda terhadap stefaanv, sepertinya pertanyaan Anda sebenarnya "bagaimana cara mendapatkan alamat IP dari thread A ke thread B?", di mana thread A menerima respons terhadap pesan siaran, dan thread B melakukan spesifik perangkat komunikasi.
Salah satu cara Anda dapat melakukan ini adalah dengan membuat thread B dari thread A, dan meneruskan alamat IP sebagai argumen ke fungsi thread B. Dengan cara ini thread B akan mengetahui dari awal alamat IP mana yang harus diajak bicara.
Jika thread B harus aktif dan berjalan sebelum thread A, Anda dapat membagikan alamat IP menggunakan variabel global, dan menggunakan, misalnya. sebuah semaphore sehingga thread A dapat memberitahu thread B kapan thread tersebut telah menetapkan alamat IP. Pastikan saja bahwa thread A adalah satu-satunya thread yang menulis variabel global tersebut, atau Anda harus menyiapkan lapisan sinkronisasi lain, misalnya. menggunakan mutex, untuk memastikan bahwa penulisan ke alamat IP hanya dilakukan oleh satu thread dalam satu waktu.
Jika Anda mengirimkan siaran dan mengharapkan jawaban melalui UDP, Anda harus menerimanya dengan recvfrom panggilan. Ini mengisi alamat pengirim. Panggilan yang sesuai untuk mengirim UDP dengan informasi alamat yang diterima adalah sendto.
Anda tidak menentukan O/S, tapi...
Anda dapat membuat soket UDP menggunakan connect jika Anda mau. Ini berarti bahwa pengiriman lebih lanjut ke soket itu akan menuju ke IP yang Anda "sambungkan", semua ini meskipun UDP tidak memiliki koneksi.
boost::asio
? - person Geoffroy   schedule 02.07.2013