Korzystam z serwera WWW Debian Squeeze. Zainstalowałem na nim memcached i skonfigurowałem memcached do nasłuchiwania na gnieździe domeny uniksowej (at /tmp/memcached.sock
), ponieważ potrzebuje on tylko odbierać wiadomości ze strony internetowej, która mieszka na tym samym serwerze.
Wygląda na to, że działa dobrze, ale chciałbym również komunikować się z memcached przez powłokę, aby sprawdzić, czy robi to, co myślę, że działa.
memcached przyjmuje wiadomości za pomocą prostego protokołu ASCII (jeśli dobrze rozumiem). Gdyby nasłuchiwał w TCP / IP, mógłbym wysyłać do niego wiadomości za pośrednictwem np . nc
:
$ echo "stats settings" | nc localhost 11211
Ale nie mogę wymyślić, jak wysłać ten tekst do gniazda domeny.
Na moim laptopie (czyli OS X Lion), zarówno nc
i telnet
posiada opcje ( -U
i -u
odpowiednio) używania gniazd domeny. Jednak na moim serwerze internetowym Debian Squeeze te opcje nie są obecne.
/var/run/socket
? Czy istnieje sposób na ponowne wykorzystanie istniejącego pliku?-l
), utworzy plik. W przeciwnym razie oczekuje, że gniazdo już istnieje (i już coś na nim nasłuchuje). Tak więc przykładowe polecenie w odpowiedzi nie tworzy pliku.Za pomocą
socat
(„dwukierunkowego przekaźnika danych między dwoma kanałami danych”) możesz połączyć się z gniazdem domeny unix w następujący sposób:źródło
netcat-openbsd
obsługuje łączenie z gniazdami domeny UNIX. Korzystając z tego, możesz połączyć się z gniazdem strumienia domeny UNIX lub gniazdem datagramów domeny UNIX i dlatego musisz powiedzieć typowi gniazda netcat.na przykład
/dev/log
plik w systemie Linux jest gniazdem datagramowym w domenie UNIX , dlategonc -U /dev/log
nie będzie działać . Zamiast tego użyjnc -uU /dev/log
. Użycie -u wraz z -U informuje netcat, że jest to gniazdo datagramowe w domenie UNIX.Podobnie, podczas korzystania
socat
, użyj opcji UNIX-CLIENT. Korzystając z tej opcji, możesz połączyć się ze strumieniem domen UNIX i gniazdami datagramów domeny UNIX . Ze strony man (man socat) : „ Najpierw próbuje się połączyć, a jeśli to się nie powiedzie, zakłada, że jest to gniazdo datagramu, obsługując oba typy ”.źródło
Możesz używać socat na Debianie. Aby zainstalować:
źródło
socat
zainstalowałem na moim serwerze, ale z pewnością jest dostępny: packages.debian.org/squeeze/socat