recv
ループ内でデータを処理しているノンブロッキングの winsock ソケットがあります。
たとえば、パテと生のソケットに接続すると、メッセージの送信が正常に機能することに気付きました。MSG_PEEK
ただし、この特定のクライアントとインターフェイスする場合、パケットは への正常な非呼び出しをトリガーしていないように見えますrecv
。数年前に同様の問題が発生したことを思い出し、 client でパケットを終了するか、 client\r
からの何かを終了する必要がありました。この場合、クライアントを変更できないため、これは不可能です。
Wireshark は、パケットが問題なく通過することを示しています。しかし、私のサーバー プログラムは正しく動作していません。
どうすればこれを修正できますか?
編集:バッファー サイズをたとえば 8 に下げると、MSG_PEEK なしで recv の呼び出しがいくつか成功しました。
受信コール:
iLen = recv(group->clpClients[cell]->_sock, // I normally call without MSG_PEEK
group->clpClients[cell]->_cBuff, CAPS_CLIENT_BUFFER_SIZE, MSG_PEEK);
if(iLen != SOCKET_ERROR)
{
...
ソケットは、AF_INET
です。SOCK_STREAM
IPPROTO_TCP