중복 된 I/O와 함께 Winsock2를 사용하고 있습니다. 이것은 WSAOecl 구조체와 함께 WSARecv를 호출하고 나중에 데이터에 대해 WSAWaitForMultipleEvents를 기다리는 것을 의미합니다.디버거에서 Winsock2 데이터 손실이 발생했습니다.
나는 이상한 관찰을 내 응용 프로그램에 보내는 모든 데이터를 느슨하게하는 동안 디버거를 사용하여 중지합니다. 이 데이터가 OS의 어딘가에 쌓여서 WSARecv에 대한 다음 호출시 전달 될 것이라고 생각했습니다.
내 가정이 틀렸습니까?
코드에 다른 부분이 있는데, 여기서 설명한 상황으로 인해 버그가 생성되어서는 안되며 OS에 프로그램에 전달되지 않은 데이터 더미가있는 경우가 있습니다. 하지만 운영 체제 자체에는 한계가 있기 때문에 오버플로가 발생하면 어떻게 될지 알 수 없습니다. – Ali1S232
나는 조금 더 조사하고 디버거에서 WSAOVERLAPPED와 assciated 버퍼에 데이터가 쌓인 것을 본다. 나는이 데이터에 대해 어떤 이벤트도받지 못하는 것 같습니다. 다음 데이터 청크가 수신되면 버퍼가 덮어 쓰여지고 새 데이터에 대한 이벤트가 표시 될 수 있습니다. 정말 이상합니다. – MrZomg