1

我想通过 TCP 连接将数据流存储到大数组中,我该怎么做?

我的代码:

int iResult, count;
int recvbuflen = 512;
char buff[4096]={0};
char recvbuf[512] = {0};

.................

count = 0;

do {

    iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
    if (iResult > 0) {

                count+=iResult;

                //code to store in the buff[] array until reach to 4096 byte
                //that's what i need
                //for example: each time bind or add the recvbuf[] array at 
                //the end of buff[] array until reach to 4096 byte. 

                if(count == 4096)
                {
                  //do the next process
                  count = 0; 
                }
              }
    }while(iResult > 0);

任何帮助。

4

1 回答 1

4

您可以直接将 recv 放入您的大缓冲区并每次添加一个偏移量:

iRes = recv(ClientSocket, (buff+offset), 4096-offset, 0);

等等。注意不要溢出缓冲区。如果您需要单独接收数据并根据内容将它们添加到缓冲区,只需将recvbuf memcpy 到缓冲区(带偏移量)即可。偏移量只是跟踪直到缓冲区已经填满为止。再次注意缓冲区溢出。

于 2013-07-09T08:59:50.713 回答