私はデータのストリームを扱うTCPを持っています。一度に4096バイト必要ですが、私はrecvの前に全体のソケットサイズを見つける方法が必要です。これは、ソケットを切り替える前にソケットが何回読み取られるかを判断できるようにするためです。また、これがこのソケットの最後のrecvであることを通知するので、選択可能なスイッチが利用可能になった時点で他のソケットに切り替える前に何かできることがあります。Pythonでrecvの前にソケットのバイト数を調べる方法は?
def handle_tcp(self, sock, remote):
fdset = [sock, remote]
while True:
r, w, e = select.select(fdset, [], [])
# How to find out how much bytes need to be read from socket?
if sock in r:
non_blocking_calculation()
if remote.send(sock.recv(4096)) <= 0: break
if remote in r:
non_blocking_calculation()
if sock.send(remote.recv(4096)) <= 0: break
「最後の送信をキャプチャする」とはどういう意味ですか?最後のデータを送信したままにしますか?最後に送られたバイト数?あなたは少しそれを明確にすることを望む! – Rezniaq
@Rezniaq私はそれを保つつもりはない、私はちょうどこれがこのソケットの最後のrecv()であることを知りたいので、別の関数を処理することができる。次に、必要に応じて他のソケットに切り替えるために戻るように選択します。私は今それを修正します – Anderson
@Rezniaq 'select()'(天井(sizeofwholesocket/4096))の後に何回送信するかを決定します – Anderson