ソケットとファイル記述子

ソケットとファイル記述子

私が知る限り、ソケットは/ proc / / fdフォルダにSTDIN、STDOUT、およびSTDERRという3つのファイル記述子を生成します。

あるソケットに入力すると、生のTCP接続で別のソケットから出力する必要がありますが、問題はSTDINを使用してもecho文字列が出力されないことです。

写真を添付し​​ます。

ここに画像の説明を入力してください。

リスニングソケットで出力を見ると予想しましたが、そうではありませんでした。ありがとう

答え1

ソケットを開くとソケット、これはsocket:[5474494]出力()にファイル記述子3としてリストされていることがわかります。他の3つのファイル記述子は標準入力、出力、およびエラー記述子であり、すべてのプロセスに対してデフォルトで開きます。あなたの場合、これはプログラムが実行されている端末を指すので、ファイル記述子に書き込むと「surni」と表示されます。

ソケットに書き込むには、適切なメカニズムを使用する必要があります(たとえば、netcat他の方向)。

echo Hello | nc localhost 9999

またはBashを使用している場合:

echo Hello > /dev/tcp/localhost/9999

ただし、別のポートを使用してポート9999に接続を確立したように見えるため、netcatこれは実際にはお客様の場合には適用されません。確立された接続を使用する必要があります...

nc他のプロセスに入力ソケットを提供する長期実行手段を期待する場合は、設定する必要があります。例えばFIFOの使用:

mkfifo socket-input
nc localhost 9999 < socket-input
echo Hello > socket-input

関連情報