シナリオ: 1 つのソケットで検出アクティビティを選択すると、以下の基準がコードで発生します。
擬似コード:
after select i am checking in
if stdin f descriptor
do something
else if listening file descriptor
newFDescriptor = accept sockFDescriptor, (struct sockaddr *) &clientAddress, &clientAddressSize
FD_SET (new file descriptor)
send connected response to peer
// data from connected peer
else {
receive data
}
しかし、ピアから他のピアに何かを送信するたびに、新しいファイル記述子との新しい接続が作成されます。つまり、このピア用に既に作成されたファイル記述子のデータを認識しません。ピア 1 からピア 2 (新しいファイル記述子が作成されます) ピア 1 からピア 2 (再び新しい接続) リッスンしているファイル記述子ですべてのデータを受信しています。