Если у кого ни будь есть возможность, выложите пожалуйста рабочий код функции которая используя API подключалась бы к какому ни будь сайту и скачивала с него какую ни будь страницу. Заранее благодарен.
использую wininet библиотеку. Код (Text): DWORD dReadFileCount; HINTERNET hSource; HINTERNET hSession; BOOL ret = FALSE; char buffer[4096]; { hSession = InternetOpen ("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", LOCAL_INTERNET_ACCESS, NULL, INTERNET_INVALID_PORT_NUMBER, INTERNET_FLAG_DONT_CACHE); if (hSession == NULL) return -1; hSource = InternetOpenUrl (hSession, "www.xakep.ru", NULL, 0xFFFFFFFF, INTERNET_FLAG_DONT_CACHE, 0); if (hSource == NULL) return -1; InternetReadFile (hSource, buffer, 4096, &dReadFileCount); printf("%s\n", buffer); } вот нечто такое получается =) удачи!
Doman, может за тебя написать утилиту, которая делает, то что тебе нужно?? в инете полно инфы по "чистым" сокетам.. будь добр use google
Прошу прощения, не ястно выразился, я имел ввиду используя функции socket, connect, send и recv а то у меня что то не очень получается.
A Masm DLL with source - "pure" socket using it was written for using with masm32/delphi/Lcc32/VB etc. Some documentation: Код (Text): GetHttpFile proto :DWORD,:DWORD,:DWORD GetHttpFileEx proto :DWORd,:DWORD,:DWORD,:DWORD GetHttpFileExtreme proto :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD GetHttpFile proc URL:DWORD,path:DWORD,_wait:DWORD URL=pointer to the URL-string (http:// is optionaly) path=pointer to a string where to save the file _wait="Boolean", for FALSE the procedure create a download-thread an returns immediatly, for TRUE it waits for the complete download Код (Text): GetHttpFileEx proc URL:DWORD,path:DWORD,_wait:DWORD,INFO:DWORD INFO=look at source - some struct you can use in your program, if you pass a pointer to this struct, your program can read the downloadstatus/size/received bytes etc. (of course if you set _wait=FALSE ), if you dont want to use it - just pass a NULL Код (Text): GetHttpFileExtreme proc URL:DWORD,path:DWORD,_wait:DWORD,INFO:DWORD,Port:DWORD, CallBack:DWORD Port = your user-defined port (default port 80 is used for passing 0) CallBack = pass a pointer to your callback procedure - the download thread calls your callback in some intervalls, so for example you can implement a progressbar. If you dont want to use it - just pass a NULL If something is wrong, you get often an error-code Код (Text): ERROR_ALLOC equ 1 ERROR_THREAD equ 2 etc (source) Example: Код (Text): .data URL db "http://testserver.xyz",0 path db "tsetme.htm",0 .code invoke GetHttpFileEx,addr URL,addr path,TRUE,addr info invoke GetHttpFile,addr URL,addr path,TRUE invoke GetHttpFileExtreme,addr URL,addr path,FALSE,addr info,80,addr Caller Caller proc LOCAL msg_buffer [1024]:BYTE .data info Info_struct <> schablone db "Http: %d,Exitcode:%d, Content-length: %d, received: %d, finished: %d",0 .code invoke wsprintf,addr msg_buffer,addr schablone, info.Http_response, info.Errorcode,info.Content_length, info.received, info.finished mov eax,info.Content_length cmp info.received,eax jnbe @f @@: invoke MessageBox,0,addr msg_buffer,0,0 ret Caller endp _45640559__GetHttpFile.zip