| Код |
int LoadURL(void){ char header[]="GET / HTTP/1.0\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\nUser-Agent: Mozilla/3.0 (compatible)\r\nHost: www.yandex.ru\r\n\r\n"; SOCKET sock; sock = socket(AF_INET,SOCK_STREAM,0); struct sockaddr_in addr; struct hostent* Host; Host = gethostbyname("www.yandex.ru"); memcpy(&addr.sin_addr,Host->h_addr_list[0],Host->h_length); addr.sin_port=htons(80); addr.sin_family = AF_INET; memcpy(addr.sin_zero,"\x00\x00\x00\x00\x00\x00\x00\x00",8);
connect(sock,(struct sockaddr *)&addr,sizeof(addr));
if(SOCKET_ERROR == send(sock,header,sizeof(header),0)){ cout << WSAGetLastError () << "\n"; exit(1); } int len=1; char tbuf[4096]; while(len != SOCKET_ERROR){ cout << "GET!\n"; len = recv(sock,(char *)&tbuf,sizeof(tbuf),0); // проблемная ф-ция !!! if(len == 0 || len == SOCKET_ERROR){ break; }else{ tbuf[len]='\0'; cout << tbuf ; } } closesocket(sock); exit(1); return 1; }
|
Вот собственно обтесанный кусок кода, кстати там еще на recv почему-то иногда приложение просто зависает (намертво) при контакте с некоторыми серверами (например yandex.ru) |