Я написал немного SocketWrapper в C только для обучения и он работает. Я отправляю GET-запрос и получаю буфер [1024]. Но контент, который я хотел бы читать, часто длиннее 1024. Как определить длину и получить все данные?C Socket - определение длины данных
#include <stdio.h>
#include <stdbool.h>
#include "lib/output.h"
#include "lib/network.h"
int main(int argc, char *argv[]) {
debug_verbose = true;
struct IPv4_CLIENT client;
client = socketIPv4("google.com", 80);
if(socketIPv4_connect(client) < 0) {
error("Connect failed!");
return -1;
}
char send_buffer[256];
bzero(send_buffer, 256);
printline("Send: ");
fgets(send_buffer, 255, stdin);
socketIPv4_write(client, send_buffer);
char receive_buffer[1024];
socketIPv4_read(client, receive_buffer, 1024);
hexdump(receive_buffer, 1024);
socketIPv4_close(client);
return 0;
}
Вот почему есть HTTP [спецификация протокола] к (http://www.w3.org/Protocols/rfc2616/rfc2616.html) - это рассказывает вам, как делать подобные вещи. (Какую версию HTTP вы пытаетесь реализовать? Правила для 1.1 намного сложнее - вы * должны * поддерживать закодированную кодировку.) –