私が読んだことによれば、(開いているだけでCはわかりません)、特定の順序で関数を呼び出して、サーバーとクライアントの間にソケットセッションを確立します。
It starts with the Server:
socket() #creates communication point
bind() #gives this communication point an address
listen() #tells it to be ready for some signal
then the Client:
socket()
connect() #establishes a line between himself and the listening Server
now both can talk with each other by using read() and write().
まあ、これはCプログラミング言語で実装されていますが、Shellでも実装できますか?それでは、こうするのが合理的でしょうか?
答え1
コマンドラインから(またはシェルスクリプトを介して)ソケット接続を確立するために使用できるいくつかのプログラムがあります。最も一般的なのはおそらくnetcatであり、そのうち少なくとも3つの実装があります。
オリジナル©1995-1996 Avian Research(ホビットのウェブキャット)。私が知っている限り、良いアップストリームリンクはないので、ここではDebianパッケージトラッカーにあります:https://tracker.debian.org/pkg/netcat
Netcat6、書き換え。今捨てられたと宣言されました。http://www.deepspace6.net/projects/netcat6.html
netcat-openbsd、OpenBSDプロジェクトによって書き直されました。たぶんそれはあなたが望むものかもしれません。コードは以下にあります。http://bxr.su/openbsd/usr.bin/nc/
socatは書き換えではありませんが、多くの追加機能を備えた同じアイデアです。もう一つの良いオプションすべての機能が必要で、追加の複雑さに気にしない場合。http://www.dest-unreach.org/socat/
bc
マニュアルページには多くの例があります。たとえば、以下はソケットで実行する方法です(マンページのより怖い例に基づいています)。
mkfifo /tmp/f && cat /tmp/f | bc -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
bc
その後、次のコマンドを使用してネットワークに接続できます。
nc localhost 1234
または を使用すると、socat
次のようになります。
socat EXEC:'bc -i' TCP4-LISTEN:1234,bind=127.0.0.1 # server
socat - TCP4:127.0.0.1:1234 # client