Razgildai
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору я уже разобрался - помог один товарищ, переделал код и заработало Код: WSADATA wsaData; struct sockaddr_in srv; struct hostent* ip_addr; int port,s; char *InetAddr; char* http_host="ya.ru"; if (WSAStartup(WINSOCK_VERSION, &wsaData)) {ShowMessage("Can't Initialize");return 1;} ip_addr=gethostbyname(http_host); if (!ip_addr) {ShowMessage("Can't Resolve Hostname");return 2;} InetAddr = inet_ntoa (*(struct in_addr *)*ip_addr->h_addr_list); memset(&srv, 0, sizeof(srv)); srv.sin_family=AF_INET; s=socket(AF_INET,SOCK_STREAM,0); if (s==INVALID_SOCKET) {ShowMessage("INVALID_SOCKET");return 3;} //memcpy((char*)&srv.sin_addr,ip_addr->h_addr_list[0],ip_addr->h_length); srv.sin_port=htons(80); srv.sin_addr.s_addr = inet_addr(InetAddr); s=socket(AF_INET,SOCK_STREAM,0); if (s==INVALID_SOCKET) {ShowMessage("INVALID_SOCKET");return 4;} if (connect(s,(struct sockaddr*)&srv,sizeof(srv))==-1) {ShowMessage("Can't Connect");return 5;} Edit1->Text="Connected"; char *query=(char*)malloc(2048); strcpy(query,"GET / HTTP/1.1\r\nHost: ya.ru\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en)\r\nAccept: */*\r\n\r\n"); if (send(s,query,strlen(query),0)==SOCKET_ERROR) return 6; ..... | Теперь возникла друная проблема. при получении ответа с сервера, не могу закончить цикл после принятия последнего байта при таком коде жду страницу почти 3 минуты. Код: int size=1024; // 1Kb char *result=(char*)malloc(size); char *res=(char*)malloc(size*1024); strcpy(result,""); int bytesrec=1; while (bytesrec!=0) { bytesrec=recv(s,result,sizeof(size),0); result[bytesrec]=0; res+=result; } | при таком 5-10 сек. Код: AnsiStrinf res; int size=1024; // 1Kb char *result=(char*)malloc(size); while (true) { bytesrec=recv(s,result,sizeof(size),0); size-=bytesrec; result[bytesrec]=0; res+=result; if (res.Pos("</html>")) break; } |
| Всего записей: 279 | Зарегистр. 27-04-2005 | Отправлено: 14:34 09-06-2006 | Исправлено: Razgildai, 14:36 09-06-2006 |
|