버퍼를 지정하지 않고 소켓에서 데이터를 수신하려고합니다.
죄송합니다. 바이트를 수신하려면 버퍼를 제공해야합니다. 바이트를 사용하지 않으려면 버퍼를 읽은 다음 버퍼를 버립니다.
그냥 들어오는 데이터 버퍼에서 x 바이트를 제거하고 싶습니다.
API가 없습니다. 바이트를 유효한 버퍼로 읽어야합니다. 나중에 그 버퍼로하는 일은 당신에게 달려 있습니다.
내가 recv()
의 반환 값 위의 코드는 SOCKET_ERROR
및 WSAGetLastError()
반환 WSAECONNABORTED
입니다 실행
.
나는 대신 WSAEFAULT
을 예상했을 것입니다.
소켓의 RX 버퍼에서 데이터를 제거하는 수신 기능을 사용할 수 없습니까?
물론 가능합니다. 당신은 단순히, 그냥 임시 버퍼 인 경우에도 버퍼에 바이트를 읽을 필요 예 :
int ignoreBytes(SOCKET sock, int numBytes)
{
u_char buf[256];
while (numBytes > 0)
{
int numRead = recv(sock, (char*)buf, min(sizeof(buf), numBytes), 0);
if (numRead <= 0)
return numRead;
numBytes -= numRead;
}
return 1;
}
ignoreBytes(gSocket, userDataLength);
어디 버퍼 포인터가 null이 될 수 있다는 것을 말하는가? – EJP
아무데도. 하지만 다른 소켓 라이브러리에서도 가능하기 때문에 가능하다고 생각했습니다. –
나는 그런 라이브러리를 전혀 모르고 있지만 어쨌든 그것은 * 비 연속이다. * – EJP