int init_connect(const char* url){ struct addrinfo hints, *addr; struct sockaddr_in *addrInfo; errors = NO_ERROR; load_host_info(url); int rc; int sock; memset(&hints, 0, sizeof(hints)); hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_ADDRCONFIG; if( (rc = getaddrinfo(hostInfo.host, NULL, &hints, &addr)) ) { //fprintf(stderr, "Can't find host name: %s, Error:%s\n", hostInfo.host, gai_strerror(rc)); errors = CANT_FIND_HOSTNAME; return 0; } addrInfo = (struct sockaddr_in *) addr->ai_addr; if( (sock = socket(addrInfo->sin_family, addr->ai_socktype, addr->ai_protocol)) < 0 ) { //fprintf(stderr, "Can't create socket to host name: %s, Error:%s\n", hostInfo.host, gai_strerror(rc)); errors = CANT_CRETE_SOCKET; return 0; } addrInfo->sin_port= htons(80); int bOptVal = 1; int bOptLen = sizeof(int); setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, &bOptVal, bOptLen); if( connect(sock, (struct sockaddr *) addrInfo, addr->ai_addrlen) ) { //fprintf(stderr, "Can't connect to host name: %s, Error:%s\n", hostInfo.host, gai_strerror(rc)); errors = CANT_CONNECT_TO_HOST; return 0; } freeaddrinfo(addr); return sock;}char* connector_get(int socket_fd){ char* header = getHeader(); char* request = (char*)malloc( sizeof(char) * strlen(header) * strlen(hostInfo.host) * 4 * strlen(hostInfo.url)); sprintf( request, header, "GET",hostInfo.url,hostInfo.host); printf("Request: %s\n", request); ssize_t number_characters_read; //write (socket_fd, request, strlen(request)); send (socket_fd, request, strlen(request),0); int bufSize = 500; if( response != NULL ) { free(response); } response = malloc( sizeof(char) *(bufSize + 1)); //number_characters_read = read(socket_fd, response, bufSize); number_characters_read = recv(socket_fd, response, bufSize,0); if( number_characters_read == 0 ) { strcpy(response, "EMPTY"); return response; } response[number_characters_read+1]='\0'; free(request); return response;}char* getHeader(){ return "%s %s HTTP/1.1\r\n" "Host: %s\r\n" "Accept: text/html\r\n" "Accept: */*\r\n" "Keep-Alive: 300\r\n" "Connection: keep-alive\r\n" "User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.1.1 Firefox/3.0.8\r\n\r\n"; }
А python не канає?
Та немає там особо ніякого коду.Робиться в 2 рядки.Підключаєте відповідний модуль і використовуєте готовий клас.http://www.google.com/search?q=python+http+client&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:unofficialЧомусь мені здається що власний http клієнт - це велосипед.А щодо Node.js?
Стоїть задача написати власне розширення до ПХП для роботи із http.