开发者

how divide herader from binary data

开发者 https://www.devze.com 2022-12-31 08:45 出处:网络
ofstream dest(\"test.txt\",ios::binary); while (true){ size_t retval = recv (sd, buffer, sizeof(buffer), 0);

ofstream dest("test.txt",ios::binary);

 while (true){
  size_t retval = recv (sd, buffer, sizeof(buffer), 0);

   dest.write(buffer,retval);

 if(retval <= 0) { delete[] buffer; break;}
}

Now, the recv() function return 4 byt开发者_运维百科es each loop right? and buffer contain it, this return all data so, pseudo-header and binary data (image), but I want know how capture only binary data, I know that the end of header are "\n\r" right? but what's are the solution better for make this? I make a function that detect when are "\n\r"? and after how capture binary data? Or, I put all data in memory, and after parse it? but how? I'm desperate :(


recv will return however many bytes it can up to the maximum you've told it, which is sizeof(buffer). If that is 4, then that's what will probably be read most of the time.

The "end of header" and such makes no sense since you haven't provided the context necessary to interpret it. I'm guessing it has something to do with packet headers but each protocol is different so we have no way of knowing.


To convert individual characters to binary try this:

ofstream dest("test.txt",ios::binary);

while (true){

    size_t retval = recv (sd, buffer, sizeof(buffer), 0);

    //Convert individual chars to binary
    // and output to file
    for(int i=0; i < retval; ++i) {
        dest << bitset<8>(buffer[i]);
    }        

    if(retval <= 0) { delete[] buffer; break;}
}

Make sure to add #include < bitset > to the file

0

精彩评论

暂无评论...
验证码 换一张
取 消