Saya tahu bahwa ada soket bernama & bernama pipa (fifo) di Linux.
Dalam ls -l
, mereka akan terlihat seperti di bawah ini: (Saya telah mengubah nama file, untuk demonstrasi.)
prw-r--r-- 1 root root 0 Nov 8 16:31 /tmp/fifo
srwxrwxrwx 1 root root 0 Nov 8 15:54 /tmp/socket
Sekarang, pipa bernama dapat dibuat menggunakan mkfifo
. Apakah ada perintah untuk membuat soket bernama?
Opsi terakhir adalah menulis program C, yang akan memanggil fungsi mknod, tetapi ingin tahu, apakah sudah ada perintah untuk itu.
Apa yang saya coba:
Saya mencoba mencari opsi apa saja ke mknod & mkfifo, tetapi tidak dapat menemukannya.
CATATAN: Saya tidak membahas tentang model server-klien melalui Ethernet / jaringan. File soket bernama akan digunakan oleh 2 proses pada sistem yang sama.
Jawaban:
File soket Unix / Linux pada dasarnya adalah FIFO dua arah. Karena soket pada awalnya dibuat sebagai cara untuk mengelola komunikasi jaringan, dimungkinkan untuk memanipulasinya menggunakan
send()
danrecv()
panggilan sistem. Namun, dalam semangat Unix "semuanya adalah file", Anda juga dapat menggunakanwrite()
danread()
. Anda perlu menggunakansocketpair()
atausocket()
membuat soket bernama. Tutorial untuk menggunakan soket di C dapat ditemukan di sini: Panduan Beej untuk Unix IPC: Unix Sockets .The
socat
utilitas baris perintah ini berguna bila Anda ingin bermain-main dengan soket tanpa menulis "nyata" program. Miripnetcat
dan bertindak sebagai adaptor antara berbagai jaringan dan antarmuka file.Tautan:
socat
rumah proyeksocat
socat
sumber
socat
. Mungkin, buat soket yang tidak bernama, ikat ke localhost: some_port & kemudian gunakan socat dengan port itu?socat
dengan perintah UNIX-LISTEN, lihatman socat
atau manual HTML inif1
:socat UNIX-LISTEN:f1 LISTEN:f2
.!!
(socat 1.x) atau%
(socat 2.x), dengan tulisan pipa bernama di sebelah kiri dan bacaan bernama pipa di sebelah kanan. misalnyasocat 'PIPE:/tmp/outstream!!PIPE:/tmp/instream' UNIX-CONNECT:/tmp/mysocket
Buat socket dengan cepat dalam python:
Atau dengan program C kecil , misalnya, simpan yang berikut ini untuk
create-a-socket.c
:Kemudian instal gcc, kompilasi, dan ta-da:
sumber
Tidak ada alat garis perintah untuk membuat soket karena soket selalu terhubung ke server yang menangani permintaan yang dikirim ke soket itu.
Jadi, Anda harus menulis server dan membiarkannya membuat soket. Ini tutorialnya .
sumber
bind()
untuk terhubung ke"/home/beej/mysocket"