Подскажите как скачать файл попакетно 1 пакет за 1 сессию. Т.е. послав запрос получив 1 пакет закрыть сессию и открыть слудующую с новый значением range. Загвоздка вышла вот в чем...
вот ту я собираю пакет в raw...
//......где-то там он начал собираться, а ниже склеиваются заголовки
dptr = (struct data *)(buffer+sizeof(struct iphdr)+sizeof(struct tcphdr)); // тут собирается пакет +данные.
// как засунуть в него http -запрос?
bzero(&pseudo, 12+sizeof(struct tcphdr));
pseudo.source_address = ip_header->saddr;
pseudo.dest_address = ip_header->daddr;
pseudo.placeholder = 0;
pseudo.protocol = IPPROTO_TCP;
pseudo.tcp_length = htons(sizeof(struct tcphdr));
bcopy((char *)tcp_header, (char *)&pseudo.tcp, sizeof(struct tcphdr));
tcp_header->check = in_cksum((unsigned short *)&pseudo,20+ sizeof(struct tcphdr));
// тут по идее нужно как-то в рав засунуть протокол 4 уровня http с таким заголовким...
httpRequest(remote_ip_str, remote_port,
"GET "+url+" HTTP/1.0\r\n"
"Host: "+host+"\r\n"
"Cache-Control: no-cache\r\n"
"Pragma: no-cache\r\n"
"Content-Range: bytes "+start_len+"-"+end_len+"/-1\r\n"
"\r\n", buffer);
close(sock);
return 0;
}
void httpRequest(char host, int remote_port, int start_len, int end_len, char url, char *buffer) {
char *buf, int len, int bufsize;
// потом тут как-то ресивить пакет, верифаить что это 1 пакет, открывать новую сессию
}
Придумал ограничивать скачивание 1 пакета по Content-Range. заранее предусмотрев знавение которое точно войдет в данные 1 пакета ресива.
Вот, подскажите как запихнуть http- заголовок в raw и как дальше принимать по 1 пакету?
p.s. возможно есть другой способ не юзая Content-Range, если есть, поделитесь пожалуйста.
p.p.s. не в тот раздел =) елси можно в чистый Си пернести.