私はselectこのように使用します:
while True:
readReady, _, _ = select.select([src, dst], [], [])
for ready in readReady:
if ready == dst:
toRead = dst
toWrite = src
else:
toRead = src
toWrite = dst
toWrite.sendall(toRead.recv(10))
toWriteまた、すべてのデータが送信されるまでブロックしても問題ありません。しかし、selectデータがないときにソケットを読み取る準備ができているため、問題はすぐに戻ります。実際にデータがあるまで待つにはどうすればよいですか?
また、print(toRead.recv(10))空であると表示されます(ブロックするb''ことを期待していましたが)。selectソケットはブロッキング モードです。