6

だから私は疑問に思います-受け入れられたTCP接続(WindowsまたはOSのようなUnix上)をあるプロセスから別のプロセスに渡すことは可能ですか? ここでのポイントは、接続を渡すことです。プロキシ アプリのようにデータではありません。

4

2 に答える 2

8

Unix では、TCP 接続はソケット ファイル記述子として表されます。プロセスを実行forkすると、TCP ソケットを含むファイル記述子が子プロセスに継承されます。exec(ただし、FD_CLOEXECフラグが指定されている場合は閉じられている可能性がありますfcntl。)

ローカル (Unix) ドメインソケットを使用して、無関係なプロセス間でファイル記述子を転送することもできます。この質問を参照してください。

Windowsについてはわかりません。

于 2011-03-15T13:58:32.447 に答える
5

Windowsでは、を使用して、入力したものを他のプロセスにWSADuplicateSocket渡し、を使用してソケットを再作成します。WSAPROTOCOL_INFOWSPSocket

UNIXライクなOSでは、これはsendmsg()システムコールを使用して可能です。libancillaryはあなたのためにこれを抽象化します。

于 2011-03-15T14:09:05.733 に答える