2013-04-04 1 views
2

클라이언트/서버 시나리오를 구현하고 Win 소켓을 사용하기 위해 MFC 앱을 작성했습니다. 예 : 작은 메시지를 보내거나받을 수 있습니다. "여보세요". 또한, 크기가 1000 인 버퍼로 시도했습니다. 그러나 크기를 더 늘리면 멈 춥니 다. 어떤 오류도 던지지 않습니다.Winsock은 recv 버퍼 크기를 보냅니다.

문제의 원인에 대한 의견이 있으십니까? winsock에서 보내거나받을 수있는 버퍼의 최대 크기에는 제한이 있습니까? 나는 이것에 초보자이고 전에 winsock을 사용한 적이 없다.

+1

의 최대 크기는 64K입니다 . 이 크기의 패킷을 보내려고하면 패킷이 손실 될 가능성이 큽니다. 그러나 1000 바이트 주위의 패킷은 문제가되지 않습니다. 몇 가지 코드를 게시하십시오. – Matt

+0

2000 바이트로 시도해 보았지만 현재는 정상적으로 작동합니다. 그 코드를 변경하지 않았습니까? 그러나 더 큰 데이터, 예를 들어 9000 바이트는 실패합니다. 또한 응답하지 않을 때 "스레드 'Win32 스레드'(0x1bc0) 코드 0 (0x0)"서버 응용 프로그램의 출력 창에서 종료되었습니다. – pree

+0

알았어 :) 내 코드에 사소한 버그가 있었고 실제로 서버 끝에서 데이터를받지 못했습니다. 대신 모든 데이터가 도착하기를 기다리고있었습니다. 이제 여러 번 실행하여 데이터를 수신 할 수 있습니다. – pree

답변

1

다음은 icabod의 comment입니다.

는 ". 당신은 그 나머지 부분을 데이터의 일부를받을 수 있다는 사실은, 그것은 기본적으로 TCP가 작동하는 방법에 내 answer to this question 덮여있다 -. icabod"TCP 패킷이 가질 수있는

관련 문제