2013-11-26 4 views
2

recv (sh , buff , 5000, 0). 내 버프는 x 바이트에 대해 mallocated라고 가정합니다. 처음부터받은 바이트를 어떻게 쓸 수 있습니까? 나는 *buff으로 시작하고 buff+x으로 시작하고 싶지 않다는 뜻입니다.recv - 항상 첫 번째 바이트 채우기

+3

당신은 더 명확하게하려고 주시겠습니까 참조? 'write '로 무엇을 의미합니까?'buff + x'는 결코 의미가 없습니다. 할당 된 공간 다음에 * 첫 번째 바이트가 될 것이므로 어떤 식 으로든 터치해서는 안됩니다 ... – unwind

+2

'buff '가 힙을 할당 받았고 할당 이후 포인터를 수정하지 않았다면 할당 된 메모리의 시작 부분을 가리킬 것이므로'buff '로'recv'를 호출하면'recv'가 th e는 처음에'buff'에 의해 지시 된 첫번째 바이트에 바이트를 받았다. –

+2

표시하는대로 수행하십시오. 당신의 질문에있는'recv' 문은'buff'가 가리키는 곳에 5000 바이트를 읽으려고합니다. – alk

답변

1

recv은 주어진 주소 (* buff)에 수신 된 데이터를 항상 쓰기 시작합니다.

모든 데이터가 도착 할 때까지 루프에서 읽어야 코드가 강력한하려면 (이 후속 호출이 buff+received bytes에 작성해야 있음을 의미한다.

Handling partial return from recv() TCP in C

관련 문제