Cara UCSPI-TCP
Ada toolets selain netcat. Berikut ini cara menggunakannya. Mereka semua menganggap keberadaan serviceskrip yang menjalankan Anda func, apa pun itu:
#! / bin / sh
saat membaca -r PESAN
melakukan
echo 1> & 2 "$ {TCPREMOTEIP}" "$ $ TCPREMOTEPORT}" rx "$ {MESSAGE}"
func
selesai
The TCPREMOTEIPdan TCPREMOTEPORTvariabel lingkungan didefinisikan oleh protokol ucspi-TCP.
Script ini muncul sebagai proses individu per koneksi TCP menggunakan berbagai toolet. Dalam apa yang berikut, alat ditampilkan seperti yang digunakan dalam skrip pendek. Skrip semacam itu, yang dinamai secara konvensional run, adalah cara seseorang menjalankannya di bawah manajer layanan keluarga-daemontools. Mereka tentu saja dapat dipanggil secara langsung.
Bernstein ucspi-tcp
Dengan ucspi-tcp Daniel J. Bernstein, tcpservermemunculkan serviceskrip:
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 0.0.0.0 7777 ./service
Ada versi Bernstein yang ditingkatkan versi IPv6 ucspi-tcp. Dengan Erwin Hoffman, tcpserverupaya untuk menangani IPv4 dan IPv6 dalam satu (jika sistem operasi mendukung ini, beberapa tidak) dan memunculkan serviceskrip:
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 :: 0 7777 ./service
Bercot s6-networking, s6, dan execline
Dengan s6-networking Laurent Bercot, s6-tcpserver4dan s6-tcpserver6menangani IPv4 dan IPv6 secara terpisah, dan menelurkan serviceskrip:
#! / command / execlineb
s6-tcpserver4 -v 0.0.0.0 7777
./layanan
#! / command / execlineb
s6-tcpserver6 -v :: 0 7777
./layanan
Seseorang dapat membangun server yang lebih kompleks dengan menempatkan alat seperti s6-tcpserver-accessdan s6-applyuidgiddalam rantai segera sebelumnya ./service.
tidak ada alat UCSPI
Dengan nosh toolset, tcp-socket-listendengarkan pada soket TCP, lagi-lagi menangani IPv4 dan IPv6 secara bersamaan jika sistem operasi mendukung melakukannya, dan rantai tcp-socket-acceptyang pada gilirannya memunculkan serviceskrip:
#! / bin / nosh
tcp-socket-listen --combine4and6 :: 7777
tcp-socket-accept --verbose --localname 0
./layanan
Atau satu menjalankan dua proses terpisah, pada sistem operasi seperti OpenBSD:
#! / bin / nosh
tcp-socket-listen 0.0.0.0 7777
tcp-socket-accept --verbose --localname 0
./layanan
#! / bin / nosh
tcp-socket-listen :: 7777
tcp-socket-accept --verbose --localname ::
./layanan
Seseorang dapat membangun server yang lebih kompleks dengan menempatkan alat-alat seperti ucspi-socket-rules-checkdan setuidgiddalam rantai.
#! / bin / nosh
tcp-socket-listen --combine4and6 :: 7777
setuidgid unprivileged-user
tcp-socket-accept --verbose --localname 0
ucspi-socket-rules-check --verbose
./layanan
Pape ipsvd
Dengan ipsvd Gerrit Pape, tcpsvdmenumbuhkan para servicenaskah:
#! / bin / sh -e
exec tcpsvd -v 0.0.0.0 7777 ./service
UCSPI-UDP
serviceSkrip umum dapat menangani ketika input standar adalah soket aliran . Tapi Anda tidak menentukan TCP secara eksplisit.
Meskipun beberapa toolkit yang disebutkan di atas dapat digunakan untuk membangun server UDP dengan cara yang mirip dengan bagaimana seseorang dapat menggunakannya untuk membangun server TCP (cf udp-socket-listenin nosh), sulit untuk membangun program layanan aktual dengan skrip shell, karena bawaan shell tidak tentu mengatasi dengan baik ketika input standar adalah soket datagram .
Bacaan lebih lanjut
- Protokol:
- perkakas:
- Daniel J. Bernstein. ucspi-tcp . cr.yp.to.
- s6-networking . Laurent Bercot. skarnet.org.
- s6 . Laurent Bercot. skarnet.org.
- Jonathan de Boyne Pollard (2016). nosh . Perangkat lunak.
- ipsvd . Gerrit Pape. smarden.org.
- manual referensi: