C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Как скачать некоторый файл из интернета "вручную" ? / Общие вопросы / Сеть

Мне очень ндравится делать всякие штучки в 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, поидее должна содержать заглавную страничку с запрашиваемого сайта :)