Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.74.205] |
|
Сообщ.
#1
,
|
|
|
Привет, народ!
Имеется в инете некоторый файл, надо его скачать "вручную". Как??? |
Сообщ.
#2
,
|
|
|
мне очень ндравится делать всякие штучки в API, так как он более нагляден, прозрачен для меня, а так же экзешнички по-меньше делает
так что звиняйте ... #define RBC_PORT 80 #define RBC_ADDR "127.0.0.1" SOCKET SendSocket; int rc; WSADATA WSAData; rc = WSAStartup(MAKEWORD(1, 1), &WSAData); if(rc != 0) return FALSE; struct sockaddr_in srv_address; int namelen; SendSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(SendSocket != INVALID_SOCKET) { memset(&srv_address,0,sizeof(SOCKADDR_IN)); srv_address.sin_addr.S_un.S_addr=INADDR_ANY; srv_address.sin_family = AF_INET; srv_address.sin_port = 0; } if(bind(SendSocket, (SOCKADDR *) &srv_address, sizeof(SOCKADDR_IN)) == SOCKET_ERROR) { closesocket(SendSocket); return FALSE; } else { namelen=sizeof(SOCKADDR_IN); getsockname(SendSocket,(SOCKADDR *)&srv_address,&namelen); return TRUE; } SOCKADDR_IN remoteAddr; int err; int iMsg = 0; int iLength; int iEnd = 0; BYTE sBuf[4096]; char *RbcMessage[] = { "GET /index.html HTTP/1.0\r\n", "Accept: */*\r\n", "Referer: http://www.sources.ru\r\n", "Accept-Language: ru\r\n", "Accept-Encoding: gzip, deflate\r\n", "User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)\r\n", "Host: www.rbc.ru\r\n\r\n\r\n", NULL }; remoteAddr.sin_family = AF_INET; remoteAddr.sin_port = htons(RBC_PORT); remoteAddr.sin_addr.s_addr = inet_addr(RBC_ADDR); err = connect (SendSocket, (PSOCKADDR) & remoteAddr, sizeof (remoteAddr)); if(err) { } else { do { send(SendSocket, (LPSTR)RbcMessage[iMsg], strlen(RbcMessage[iMsg]), 0); iMsg++; } while(RbcMessage[iMsg]); iLength = recv(SendSocket, (LPSTR)sBuf+iEnd, sizeof(sBuf)-iEnd, 0); } closesocket(SendSocket); после выполнения ентого примера, переменная sBuf, поидее должна содержать заглавную страничку с запрашиваемого сайта |
Сообщ.
#3
,
|
|
|
Наверное через WinInet проще - ненужно будет думать, прямое соединение с инетом на данной машине или через прокси...
|
Сообщ.
#4
,
|
|
|
2breeder:
ну так ясный перец просто человек, задавший вопрос, скорее всего не понимает работы данного механизма, а приведённый мной пример хоть как-то наглядно показывает - как енто работает. а я считаю, что если программист поставил перед собой задачу, то прежде чем воплотить её, сперва надо хотя бы представлять себе структуру данной задачи. |
Сообщ.
#5
,
|
|
|
2purpe:
Ну это как посмотреть \%) Человек, задавший вопрос, скорее всего, разрабатывает какую-то программу, доставка из интернета файла в которой является всего лишь одной из операций. Например, когда я пишу какой-либо код, я абсолютно не задумываюсь как будет вести себя каждый из милионов (или милиардов?) транзисторов из которых состоит процессор при выполнении этого кода \%) |
Сообщ.
#6
,
|
|
|
извините за тупой вопрос, но все таки...
как сделать тоже самое только через проксю с авторизацией?? желательно сразу пример исходника, если есть... |