Pemrograman C

Antrian Pesan POSIX dengan Pemrograman C

Antrian Pesan POSIX dengan Pemrograman C

Komunikasi Antar Proses POSIX (IPC)

IPC digunakan untuk ekstensi waktu nyata. Antrian pesan ini adalah bagian dari Linux. Panggilan ini digunakan sebagai standar sekarang tetapi mungkin menjadi bagian dari versi kontemporer. Panggilan ini mudah diterapkan dengan antarmuka yang jauh lebih bersih.

Antrian Pesan POSIX di Linux

Antrian pesan V dalam sistem Linux diidentifikasi menggunakan kunci yang diperoleh menggunakan ftok panggilan. Antrian pesan POSIX ini biasanya menggunakan string nama. Dalam sistem Linux, antrian POSIX disebut string. String ini dianggap dimulai dengan / dan kemudian memiliki karakter lain.  Proses yang mengikuti dan mengetahui nama nama antrian dengan hak yang sesuai dapat mengirim atau menerima pesan ke dan dari antrian. Ini akan membantu dalam melakukan fungsi-fungsi penting.

Apa Itu Panggilan Antrian Pesan POSIX?

Antrian pesan POSIX harus ditautkan dengan perpustakaan apa pun yang benar-benar keluar. Berikut adalah beberapa panggilan yang digunakan:

librt menggunakan opsi kompiler -lrt

Nama panggilan dimulai dengan mq_prefix

Rincian Panggilan Antrian dibahas di bawah ini:

>> mq_buka, mq_tutup

Fungsi ini digunakan untuk membuka antrian POSIX.

Mq_open adalah fungsi yang digunakan untuk memanggil nama antrian. Parameter berikutnya adalah bendera yang digunakan untuk menerima pesan. O_WRONLY digunakan untuk mengirim pesan, dan O_RDWR digunakan untuk mengirim dan menerima operasi dalam antrian. Pengguna dapat menggunakan flag O_NONBLOCK untuk menentukan antrian ke mode non-blocking dan mq_send dan mq_terima untuk mengirim dan menerima data dalam antrian.

Sintaksis
Sintaks untuk panggilan antrian di atas ditampilkan di bawah ini:

#termasuk
/* digunakan untuk membuka file */
#termasuk
/* untuk menentukan file berdasarkan path */
#termasuk
/* untuk memasukkan deskripsi antrian pesan */
mqd_t mq_open (karakter const *nama, int oflag);
/* untuk membuka dan mengakses antrian */
mqd_t mq_open (karakter const *nama, int oflag, mode_t mode,
struct mq_attribute *atribut);

Mq_Flags: Bisa O atau non-blok

Mq_MaxMsg: Jumlah maksimum pesan yang dapat dimasukkan di dalam antrian

Mq_Msgsize: Jumlah byte maksimum dalam sebuah pesan

Mq_CurMsgs: Pesan terkirim saat ini dalam antrian

mq_close panggilan: Untuk menutup semua deskriptor antrian.

mq_notify

Ini adalah panggilan yang digunakan untuk mendaftar dan membatalkan pendaftaran pemberitahuan kedatangan ketika sebuah pesan memasuki antrian kosong.

Sintaksis

#termasuk
/* untuk memasukkan semua deskripsi antrian pesan dari kode */
int mq_notify (mqd_t mqdes, const struct sigevent *sevp);
/* untuk memberitahukan kedatangan pesan dalam antrian */

mq_unlink

Ini digunakan untuk menghapus antrian yang memiliki queue_name.

Sintaksis

int mq_unlink(const char *nama_antrian);
/* Untuk menghapus antrian yang bernama queue_name */

mq_getattr, mq_setattr

Fungsi ini memiliki struktur atribut:

struct mq_attr digunakan sebagai antrian pesan untuk deskriptor.

mq_setattr digunakan untuk mengatur atribut di dalam antrian.

Sintaksis

#termasuk
int mq_getattribute(mqd_t mqdes, struct mq_attribute *atribut);
int mq_setattribute(mqd_t mqdes, const struct mq_attribute *newattribute,
struct mq_attribute*oldattr);

Contoh: Komunikasi Client-Server melalui POSIX

Berikut ini adalah contoh melakukan komunikasi client-server melalui antrian pesan POSIX. Dalam contoh, kita akan memiliki file klien dan file server.

Kami akan memiliki dua file: file (server) pertama adalah server.c, dan file (klien) lainnya adalah klien.c.

Kode Server

Gambar yang ditampilkan di bawah ini menunjukkan kode yang kami gunakan untuk komunikasi client-server. Pertama, kami memanggil beberapa perpustakaan untuk mendefinisikan string, variabel, dan fungsi. Kemudian, kami mendefinisikan fcntl fungsi dan nama server antrian. Setelah itu, kami mendefinisikan nama antrian server, diikuti dengan ukuran pesan dan ukuran buffer, untuk menentukan ukuran pesan agar sesuai dengan buffer kami pada suatu waktu. Selanjutnya, kami memanggil dan mendeskripsikan antrian, lalu kami membuat token berikutnya untuk melihat respons klien setelah dikirim ke klien. Akhirnya, konfirmasi selesai dengan mencetak pesan dari server end. Di bagian selanjutnya, Anda akan melihat bendera yang dibahas di bagian sebelumnya.

Kami menginisialisasi semua flag, termasuk mq_flags, mq_maxmsgs, dll. untuk melanjutkan dengan menyimpan permintaan. Kemudian, kami menerapkan kondisi ke nama server dan menyimpan pesan di buffer antrian. Setelah ini, pada saat penyimpanan, kami memastikan bahwa antrean mengikuti aturan prioritas berdasarkan siapa datang pertama. Pada akhirnya, kode menampilkan pesan kegagalan jika ada kesalahan yang diterima dari klien-end. Akhirnya, kami keluar dari server untuk mengirim permintaan ke klien.

Simpan servernya.file c

Kode Klien

Sekarang kita akan membahas file kedua. Gambar yang ditampilkan di bawah ini adalah kode yang kami gunakan untuk komunikasi client-server. Kode dimulai dengan memanggil pustaka standar dan mendefinisikan header variabel. Kemudian, kami mendefinisikan string dan semua jenis data. Setelah itu, kami mendeklarasikan header antrian untuk menentukan nama antrian server. Selanjutnya, kami mendefinisikan antrean izin dan ukuran pesan di dalam antrean, bersama dengan ukuran buffer pesan (ukuran maksimum yang dapat masuk ke dalam antrean).

Kami akan menjelaskan antrian dan membuat klien baru untuk menerima pesan yang dikirim dari ujung server. Kemudian, kita akan memanggil flag dan menginisialisasinya, dan memanggil fungsi client-end. Ini akan keluar dari fungsi jika terjadi kesalahan. Nilai disimpan di dalam buffer, dan respons permintaan dikirim ke server. Jika ada respons, server kemudian akan memberikan token, yang dicetak setelah klien memasukkan input. Jika terjadi kesalahan, itu akan mengembalikan nilai kesalahan, i.e., klien belum dapat mengirim pesan ke server. Setelah itu, kami akan keluar dari klien.

Simpan klien.file c

Menjalankan File

Kami menggunakan gcc kompiler untuk mengeksekusi file. Untuk menjalankan file akhir server, ketik perintah yang ditambahkan di jendela terminal:

$ sudo server gcc.c -lrt

Selanjutnya, ketik berikut ini:

$ ./Sebuah.di luar

Outputnya akan muncul sebagai berikut:

Pindah ke respons klien, ketik berikut ini:

$ sudo klien gcc.c -lrt

Kemudian jalankan yang berikut ini:

$ ./Sebuah.di luar

Outputnya akan muncul sebagai berikut:

Kesimpulan

Dalam artikel ini, Anda mempelajari cara mengirim Antrian Pesan POSIX dengan pemrograman C, serta beberapa fungsinya. Kemudian, Anda melihat beberapa contoh proses ini secara lebih rinci.

Tombol tengah mouse tidak berfungsi di Windows 10
Itu tombol tengah mouse membantu Anda menelusuri halaman web dan layar yang panjang dengan banyak data. Jika itu berhenti, Anda akhirnya akan mengguna...
Cara Mengganti Tombol Kiri & Kanan Mouse di PC Windows 10
Sudah menjadi hal biasa bahwa semua perangkat mouse komputer dirancang secara ergonomis untuk pengguna yang tidak kidal. Tetapi ada perangkat mouse ya...
Tiru klik Mouse dengan mengarahkan mouse menggunakan Clickless Mouse di Windows 10
Menggunakan mouse atau keyboard dalam posisi yang salah dari penggunaan yang berlebihan dapat menyebabkan banyak masalah kesehatan, termasuk keteganga...