1

既に作成されているが閉じられているソケット ID を作成する方法があるかどうかを知りたいです。次のコード行を使用してソケットを作成します。

sock = socket(AF_INET, SOCK_STREAM, 0);

この呼び出しが id を 3 として返し、このソケットがプログラムの過程で閉じられたとします。とにかく、同じID 3のソケットを作成することはできますか?

4

2 に答える 2

1

open()or etcの呼び出しによって返されるファイル記述子を制御できる唯一の方法socket()は、使用されるファイル記述子がまだ使用されていない最小の正の整数であることです。そして、それはunixだけです。Windows について話すことはできません。

コードで古い接続の代わりに新しい接続を使用する必要がある場合は、間接レイヤーを追加することをお勧めします。たとえば、ソケット記述子の配列を作成し、接続をこの配列へのインデックスとして参照するのではなく、接続を参照します。記述子自体を渡します。

于 2012-05-21T07:08:45.207 に答える
1

いいえ。生成される ID を制御することはできません。このような想定でコードを記述すると、頻繁に失敗する危険な可能性があります。設計的にも悪いです。

ソケット ハンドルに依存する代わりに、接続を識別するための独自の構造/ID を定義します。

于 2012-05-21T07:44:45.830 に答える