Witam,

Napisałem prosty programik który pobiera mi kod strony www w zasadzie działa ściąga ale a chiny nie mogę pobrać całej strony jakiego bufora bym nie dał zawsze otrzymuje tę samą ilość kodu strony a potrzebna mi cała ponieważ chce wyciągnąć z niej informacje o wersji programu w kodzie wersja znajduje się pod koniec kodu strony więc za nic nie mogę się do niej dostać ;/

Oto kod:

#include <iostream>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <string.h>

#define GOOGLECODE "code.google.com"
#define DEFAULT_BUFLEN 512

bool getTextFromWebSite(){

	int sock = socket(AF_INET, SOCK_STREAM, 0);
	if(sock == -1){
		std::cout<<"Socket :("<<std::endl;
		return 0;
	}

	sockaddr_in sa;	
	sa.sin_family	= AF_INET;
	sa.sin_port		= htons(80);
	struct hostent *h = gethostbyname(GOOGLECODE);
	if(!h){
		std::cout<<"Host :("<<std::endl;
		return 0;
    }

	memcpy(&sa.sin_addr.s_addr, h->h_addr_list[0], 4);
	if(connect(sock, (struct sockaddr*)&sa, sizeof(struct sockaddr)) == -1){
		std::cout<<"Połączenie :("<<std::endl;
		return 0;
	}

	char Packet[] =
		"GET /p/linux-tibia-ip-changer/wiki/Changelog HTTP/1.1\r\n"
		"Host: " GOOGLECODE "\r\n"
		"\r\n";

	int rtn = 0;
	rtn = send(sock, Packet, sizeof(Packet)-1, 0);
	if(rtn == -1){
		std::cout<<"Pakiet :("<<std::endl;
		return 0;
	}

	char Buffer[1000000];
	rtn = recv(sock, Buffer, sizeof(Buffer), 0);
	if(rtn == -1){
		std::cout<<"Pakiet2 :("<<std::endl;
		return 0;
	}

	/*if(strncasecmp(Buffer, "HTTP/1.1 200 OK", 15)){
		std::cout<<"Zła odpowiedź :("<<std::endl;	
		return 0;
	}*/
    std::cout<<Buffer<<std::endl<<rtn<<std::endl;   
	close(sock);
}



int main(int argc, char **argv)
{
	getTextFromWebSite();
	return 0;
}

Używam systemu linux(Debian) więc zależy mi na używaniu tylko soketów bez dodatkowych bibliotek ponieważ program to open sourcowe narzędzie dla zwykłych ludzi którym wymyślne biblioteki nie są potrzebne.

Zaczynam dopiero programowanie sieciowe więc proszę o wyrozumiałość.

Pozdrawiam,
Miziak ;)