Mkfifo'ya benzer ancak etki alanı soketleri için bir komut var mı?
Mkfifo'ya benzer ancak etki alanı soketleri için bir komut var mı?
Yanıtlar:
Soket için tam mkfifo eşdeğeri yoktur, yani sadece bir "asılı" soket oluşturan bir komut yoktur. Bu tarihsel bir sebepten dolayıdır: Sunucunun dosya sisteminde bir soket adı / inode oluşturan bind () işlevi, eğer isim kullanılmışsa başarısız olur. Başka bir deyişle, sunucu önceden var olan bir sokette çalışamaz.
Bu yüzden daha önce bir soket oluşturduysanız, öncelikle sunucu tarafından kaldırılması gerekir. Faydasız. Gregory'nin cevabını gördüğünüz gibi, netcat gibi bir sunucu tutarsanız bir soket oluşturabilirsiniz. Bir sunucu gittiğinde, eski soket gider. Yeni bir sunucunun yeni bir soketi vardır ve soketin adı aynı olmasına rağmen tüm istemcilerin yeniden bağlanması gerekir.
En yeni netcat (nc) ve benzeri programlar (bildiğim kadarıyla socat) etki alanı yuva seçeneklerine sahiptir.
Başka, ucspi-unix'e bir göz atabilirsin
# sudo apt-get install netcat-openbsd
Python kullanabilirsiniz:
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/test.sock')"
Ayrıca C, bu cevaba bakınız .
mksock() { SOCK="$1" python -c "import os, socket as s; s.socket(s.AF_UNIX).bind(os.environ['SOCK'])"; }
kolay kabuk kullanımı için: mksock /tmp/test.sock
Sadece netcat
böyle bir durumda kullanıyorum ve dinliyorum:
nc -lkU aSocket.sock
netcat-openbsd kullanmalısınız . netcat-traditional , -U
Unix Domain soketi için olan bir anahtara sahip değildir .
nc
BSD için +1 .