Как правильно скачивать Web-странички (странно работает функция recv)?

Тема в разделе "WASM.NETWORKS", создана пользователем Meatcoins, 9 окт 2008.

  1. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Как-то странно работает функция recv!!!
    Как правильно скачивать Web-странички?

    Код (Text):
    1. CrLf equ 0Dh,0Ah
    2.  
    3. ;SITE equ "www.samara.ru"
    4. SITE equ "www.yandex.ru"
    5.  
    6. url db SITE,0h
    7.  
    8. BUFFER_SIZE equ 50000h
    9. DELAY equ 500h
    10. myconnect PROTO :DWORD,:DWORD
    11.  
    12. DNS_ERROR equ 465h
    13.  
    14. myconnect proc hWnd,hMemo
    15. LOCAL s:SOCKET
    16. LOCAL memheap:DWORD
    17. LOCAL procheap:DWORD
    18. LOCAL sin:SOCKADDR_IN
    19. LOCAL handle:DWORD
    20. LOCAL bytes:DWORD
    21. LOCAL membuffer:DWORD
    22. LOCAL result:DWORD
    23. LOCAL str_len:DWORD
    24.  
    25.  
    26. nop
    27. nop
    28. nop
    29. nop
    30. nop
    31.  
    32. invoke GetProcessHeap
    33. mov procheap,eax
    34. ;invoke HeapAlloc,eax,HEAP_ZERO_MEMORY,BUFFER_SIZE
    35. invoke VirtualAlloc,0h,BUFFER_SIZE,MEM_COMMIT,PAGE_READWRITE   
    36. mov memheap,eax
    37. invoke HeapAlloc,procheap,HEAP_ZERO_MEMORY,4000h
    38. mov membuffer,eax
    39.  
    40.  
    41.  
    42.  
    43. invoke WSAStartup,101h,offset wsadata
    44. invoke socket,AF_INET,SOCK_STREAM,0h
    45. mov s,eax
    46.  
    47. mov eax,memheap
    48.  
    49. invoke gethostbyname,offset url
    50. .if eax==0h
    51. mov result,DNS_ERROR
    52. .data
    53. dns_error db "DNS Error!!!",0h
    54. .code
    55. invoke SendMessage,hMemo,WM_SETTEXT,sizeof dns_error,offset dns_error
    56. jmp endy
    57. .endif
    58. assume eax:ptr HOSTENT
    59. mov eax,[eax].h_addr
    60. assume eax:nothing
    61. mov eax,[eax]
    62. mov eax,[eax]
    63.  
    64.  
    65. mov sin.sin_addr.s_addr,eax
    66. mov sin.sin_port,5000h
    67. mov sin.sin_family,AF_INET
    68.  
    69.  
    70. invoke connect,s,addr sin,sizeof(sockaddr_in)
    71. ;xor eax,eax
    72. .if eax==0h
    73.  
    74. .data
    75. send_data db "GET / HTTP/1.1",CrLf
    76. db "Host: ",SITE,CrLf
    77. db "Accept: */*",CrLf
    78. db "Accept-Language: ru",CrLf
    79. db "Accept-Encoding: deflate",CrLf
    80. db "User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 8.1; SV1; .NET CLR 2.4.98777)",CrLf
    81. db "Connection: keep-alive",CrLf,CrLf
    82.  
    83. db 0h
    84.  
    85. .code
    86.  
    87. invoke lstrlen,offset send_data
    88. invoke send,s,offset send_data,eax,0h
    89. ;invoke Sleep,DELAY
    90. invoke recv,s,memheap,BUFFER_SIZE,0h
    91. mov str_len,eax
    92.  
    93.  
    94. invoke CreateFile,$CTA0("log.txt"),GENERIC_READ  or GENERIC_WRITE,0h,0h,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0h
    95. mov handle,eax
    96. invoke WriteFile,handle,memheap,BUFFER_SIZE,addr bytes,0h
    97. invoke CloseHandle,handle
    98.  
    99. ;invoke closesocket,s
    100. invoke WSACleanup
    101.  
    102.  
    103. ;invoke lstrlen,memheap
    104. mov eax,str_len
    105. invoke SendMessage,hMemo,WM_SETTEXT,eax,memheap
    106.  
    107.  
    108.  
    109. nop
    110. nop
    111. nop
    112. nop
    113. nop
    114. mov eax,str_len
    115. nop
    116. nop
    117. nop
    118. nop
    119. nop
    120.  
    121.  
    122.  
    123.  
    124.  
    125.  
    126. .endif
    127. invoke HeapFree,procheap,0h,membuffer
    128. ;invoke HeapFree,procheap,0h,memheap
    129. invoke VirtualFree,memheap,BUFFER_SIZE,MEM_DECOMMIT
    130.  
    131.  
    132.  
    133.  
    134. endy:
    135.  
    136. mov eax,result
    137. ret
    138. myconnect endp
    Вот непонятное место:
    Код (Text):
    1. invoke lstrlen,offset send_data
    2. invoke send,s,offset send_data,eax,0h
    3. ;invoke Sleep,DELAY
    4. invoke recv,s,memheap,BUFFER_SIZE,0h
    5. mov str_len,eax
    Почему-то если invoke Sleep,DELAY в коментариях, то скачивается неполностью www.samara.ru, а www.yandex.ru скачивается полностью, а если invoke Sleep,DELAY, то скачивается полностью www.samara.ru, а www.yandex.ru скачивается неполностью!!! Причём каждый раз неполноскачанная страничка обрывается на одном и том же месте!
    Что за ерунда?
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Meatcoins
    Что за ерунда?
    imho, прежде чем писать программу, необходимо ознакомиться с теорией. Начать можно с Самоучитель игры на WINSOCK.
     
  3. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    наверное ты не всю страницу принимаешь просто :)
    С чего ты решил что за один recv ты получишь всю страницу?
    Второй recv сделать не пробовал ;)
     
  4. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Спасибо за ссылочку http://www.citforum.ru/
    Есть там кое-что почитать....
    Несколько раз recv я пробывал вызывать - работает - считывается по частям всё!
    Например, длинные сайты, типа www.samara.ru считываются по частям при помощи вызова recv несколько ряд подряд.
    Но если вызывать recv в цикле, то на какой-то итерации, когда не будет данных, прога просто зависнет - будет ждать данных от узла, а они уже кончились!
    Мне что поток создавать, делать TIMEOUT, а потом мочить его по TIMEOUT'у???
    Что-то сложновато как-то... хотелось бы конечно за 1 recv - буфер-то я могу выделить хоть 100Mбайт! Что ему мешает?

    Хотя тут цикл какой-то:
    while((nsize=recv(my_sock,&buff[0],
    sizeof(buff)-1,0))
    !=SOCKET_ERROR)

    Попробую так...

    Блин, смотрю на код и думаю...
    Разьве recv возвращает SOCKET_ERROR, помоему она просто зависает и ждёт данные, и всё!
     
  5. GastiX

    GastiX New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2008
    Сообщения:
    17
    Можно привязать FD_READ к обработчику сообщений окна через WSAAsyncSelect или использовать WSAEventSelect. Читайте MSDN по этим функциям.

    А самоучитель игры на WINSOCK - детский сад. ИМХО.
     
  6. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Ну, это-то да, а если хочется без окна...
     
  7. GastiX

    GastiX New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2008
    Сообщения:
    17
    Без окна - WSAEventSelect и работайте с событием WSAEVENT.
     
  8. slavanap

    slavanap Вячеслав

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    300
    Адрес:
    Смоленск, Россия
    Meatcoins
    Когда данные закончились recv возвращает 0. А если после этого опять вызвать recv, то она будет бесконечно ждать.
     
  9. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    GastiX
    Что-то ты вообще нихуа не в тему сказал. Причем здесь эвенты и события? От того, что ты переключишь сокет в неблокирующий режим, смысл программы не поменяется.
     
  10. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Какая интресная шляпа! Хочется разобраться.
    Когда страница полностью закачена, сервер должен завершить соеденение, при этом recv должен вернуть NULL.
    SOCKET_ERROR recv возвращает только тогда, когда соеденение оборвано (закрыто некорректно).
     
  11. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Meatcoins
    Кстати, я не знаю по какой причине, при резервировании с помощью VirtualAlloc большого объема для буфера приема-отправки, у меня тоже возникали проблемы с недогрузом страниц.
    Копать не стал тогда эту проблему, просто взял 800h из стека и закрутил в цикле. Все стало работать. Попробуй.

    Судя по описанию, эта книга очень похожа на переделанную под Винду "UNIX. Разработка сетевых приложений". Очень даже не плохая книга, рекомендую (самоучитель не читал).

    Порекомендуй не детский сад, тогда уж... раз такой взрослый.
     
  12. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Всем спасибо! Всё работает!
    Действительно, ничего сложного...
    А за ссылочки спасибо!
    Код (Text):
    1. CrLf equ 0Dh,0Ah
    2.  
    3. ;SITE equ "www.samara.ru"
    4. SITE equ "www.yandex.ru"
    5.  
    6. url db SITE,0h
    7.  
    8. BUFFER_SIZE equ 50000h
    9. RECV_SIZE equ 100h
    10. DELAY equ 500h
    11. myconnect PROTO :DWORD,:DWORD
    12.  
    13. DNS_ERROR equ 465h
    14.  
    15. myconnect proc hWnd,hMemo
    16. LOCAL s:SOCKET
    17. LOCAL memheap:DWORD
    18. LOCAL procheap:DWORD
    19. LOCAL sin:SOCKADDR_IN
    20. LOCAL handle:DWORD
    21. LOCAL bytes:DWORD
    22. LOCAL membuffer:DWORD
    23. LOCAL result:DWORD
    24. LOCAL str_len:DWORD
    25.  
    26.  
    27. invoke GetProcessHeap
    28. mov procheap,eax
    29. invoke VirtualAlloc,0h,BUFFER_SIZE,MEM_COMMIT,PAGE_READWRITE   
    30. mov memheap,eax
    31. invoke HeapAlloc,procheap,HEAP_ZERO_MEMORY,4000h
    32. mov membuffer,eax
    33.  
    34.  
    35.  
    36.  
    37. invoke WSAStartup,101h,offset wsadata
    38. invoke socket,AF_INET,SOCK_STREAM,0h
    39. mov s,eax
    40.  
    41. mov eax,memheap
    42.  
    43. invoke gethostbyname,offset url
    44. .if eax==0h
    45. mov result,DNS_ERROR
    46. .data
    47. dns_error db "DNS Error!!!",0h
    48. .code
    49. invoke SendMessage,hMemo,WM_SETTEXT,sizeof dns_error,offset dns_error
    50. jmp endy
    51. .endif
    52. assume eax:ptr HOSTENT
    53. mov eax,[eax].h_addr
    54. assume eax:nothing
    55. mov eax,[eax]
    56. mov eax,[eax]
    57.  
    58. mov sin.sin_addr.s_addr,eax
    59. mov sin.sin_port,5000h
    60. mov sin.sin_family,AF_INET
    61.  
    62. invoke connect,s,addr sin,sizeof(sockaddr_in)
    63. ;xor eax,eax
    64. .if eax==0h
    65.  
    66. .data
    67. send_data db "GET / HTTP/1.1",CrLf
    68. db "Host: ",SITE,CrLf
    69. db "Accept: */*",CrLf
    70. db "Accept-Language: ru",CrLf
    71. db "Accept-Encoding: deflate",CrLf
    72. db "User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 8.1; SV1; .NET CLR 2.4.98777)",CrLf
    73. db "Connection: keep-alive",CrLf,CrLf
    74.  
    75. db 0h
    76.  
    77. .code
    78. invoke lstrlen,offset send_data
    79. invoke send,s,offset send_data,eax,0h
    80.  
    81. mov edx,memheap
    82. mov eax,1h
    83. .while eax!=0h
    84. push edx
    85. invoke recv,s,edx,RECV_SIZE,0h
    86. pop edx
    87. add edx,eax
    88. .endw
    89. sub edx,memheap
    90. mov str_len,edx
    91.  
    92. invoke CreateFile,$CTA0("log.txt"),GENERIC_READ  or GENERIC_WRITE,0h,0h,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0h
    93. mov handle,eax
    94. invoke WriteFile,handle,memheap,str_len,addr bytes,0h
    95. invoke CloseHandle,handle
    96. invoke closesocket,s
    97. invoke WSACleanup
    98. mov eax,str_len
    99. invoke SendMessage,hMemo,WM_SETTEXT,eax,memheap
    100. .endif
    101. invoke HeapFree,procheap,0h,membuffer
    102. invoke VirtualFree,memheap,BUFFER_SIZE,MEM_DECOMMIT
    103. endy:
    104. mov eax,result
    105. ret
    106. myconnect endp
     
  13. trr

    trr New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2006
    Сообщения:
    52
    Вроде всё сделал правильно, но yahoo.ru (68.180.206.184) не качается. Зато если в "Host:" написать 127.0.0.1 и запустить сервер, то страница грузится. Может кто обьяснить что не так, кому не сложно?

    Код (Text):
    1. .data
    2. GetTemplate db "GET / HTTP/1.1",13,10
    3. db "Host: 68.180.206.184",13,10
    4. db "Accept: */*",13,10,13,10,0
    5.  
    6. HostName   db "68.180.206.184",0
    7. hSock1    dd 0
    8.  
    9. .data?
    10. wsadata WSADATA <>
    11. SA sockaddr_in <>
    12. BufferHTML db 1024 dup(?)
    13.  
    14. .const
    15. WM_SOCKET equ WM_USER+257
    16.  
    17. ...
    18. ...
    19. .ELSEIF uMsg==WM_SHOWWINDOW
    20.       invoke socket,PF_INET,SOCK_STREAM,0
    21.                 mov hSock1,eax
    22.                         invoke inet_addr,addr HostName
    23.                         .if eax==INADDR_NONE
    24.                                 invoke gethostbyname,addr HostName
    25.                                 mov eax,[eax+12]
    26.                                 mov eax,[eax]
    27.                                 mov eax,[eax]
    28.                                 mov SA.sin_addr,eax
    29.                         .else
    30.                                 mov SA.sin_addr,eax
    31.                         .endif
    32.                         mov SA.sin_family,AF_INET
    33.                 invoke htons,80
    34.                 mov SA.sin_port,ax
    35.                 invoke WSAAsyncSelect,hSock1,hWnd,WM_SOCKET,FD_CONNECT or FD_READ or FD_CLOSE
    36.                         invoke connect,hSock1,addr SA,sizeof SA
    37.  
    38.  
    39. .ELSEIF uMsg==WM_SOCKET
    40.     .IF ax==FD_CONNECT
    41.         invoke send,hSock1,addr GetTemplate,eax,0
    42.     .ELSEIF ax==FD_READ
    43.             invoke recv,hSock1,offset BufferHTML,1024,0
    44.     .ELSEIF ax==FD_CLOSE
    45.         INVOKE closesocket,hSock1
     
  14. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Привет!
    Вообще поле Host в протоколе HTTP используется, чтобы дать понять серверу, который находится на определённом IP, какой из виртуальных host'ов ты хочешь грузить - там должно быть www.yahoo.ru, а не IP!
    Попробуй ещё указать:
    db "Accept-Encoding: deflate",CrLf - чтобы то, что ты скачаешь было не закодировано и не сжато by gzip!
    db "Connection: keep-alive",CrLf,CrLf - "хранить" соединение!
     
  15. trr

    trr New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2006
    Сообщения:
    52
    Спасибо. Но invoke connect по прежнему упорно возвращает "-1". Уже всё испробовал - безрезультатно. Видимо после ".ELSEIF uMsg==WM_SHOWWINDOW" есть какая то ошибка! Вот полный исходник http://wasm.ru/forum/attachment.php?item=2571

    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
    6. WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
    7.  
    8. include c:\temp\masm32\include\windows.inc
    9. include c:\temp\masm32\include\user32.inc
    10. includelib c:\temp\masm32\lib\user32.lib
    11. include c:\temp\masm32\include\kernel32.inc
    12. includelib c:\temp\masm32\lib\kernel32.lib
    13. include c:\temp\masm32\include\shell32.inc
    14. includelib c:\temp\masm32\lib\shell32.lib
    15. include c:\temp\masm32\include\wsock32.inc
    16. includelib c:\temp\masm32\lib\wsock32.lib
    17. include c:\temp\masm32\include\advapi32.inc
    18. includelib c:\temp\masm32\lib\advapi32.lib
    19.  
    20. .data
    21. ClassName db "DLGCLASS",0
    22. DlgName   db "Form1",0
    23. ;;;addresIP   db "68.180.206.184",0
    24. HostName   db "68.180.206.184",0
    25.  
    26. GetTemplate db "GET / HTTP/1.1",13,10
    27. db "Host: www.yahoo.ru",13,10
    28. db "Accept-Encoding: deflate",13,10
    29. db "Connection: keep-alive",13,10
    30. db "Accept: */*",13,10,13,10,0
    31.  
    32. hFile dd 0
    33. hSock1 dd 0
    34. hReg dd 0
    35. pType dd 0
    36.  
    37. .data?
    38. hInstance HINSTANCE ?
    39. CommandLine LPSTR ?
    40. hDlg dd ?
    41.  
    42. wsadata WSADATA <>
    43. SA sockaddr_in <>
    44. BufferHTML db 1024 dup(?)
    45.  
    46. .const
    47. WM_SOCKET equ WM_USER+257
    48.  
    49. .code
    50. program:
    51. INVOKE GetModuleHandle,0
    52. mov hInstance,eax
    53. INVOKE GetCommandLine
    54. mov CommandLine,eax
    55. INVOKE WinMain,hInstance,0,CommandLine,SW_SHOWDEFAULT
    56. INVOKE ExitProcess,eax
    57. WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    58. LOCAL wc:WNDCLASSEX
    59. LOCAL msg:MSG
    60. mov wc.cbSize,SIZEOF WNDCLASSEX
    61. mov wc.style,CS_HREDRAW or CS_VREDRAW
    62. mov wc.lpfnWndProc,OFFSET WndProc
    63. mov wc.cbClsExtra,0
    64. mov wc.cbWndExtra,DLGWINDOWEXTRA
    65. push hInst
    66. pop wc.hInstance
    67. mov wc.hbrBackground,COLOR_BTNFACE+1
    68. mov wc.lpszClassName,OFFSET ClassName
    69. mov wc.lpszMenuName,0
    70. INVOKE LoadIcon,hInstance,0
    71. mov wc.hIcon,eax
    72. mov wc.hIconSm,eax
    73. INVOKE LoadCursor,0,IDC_ARROW
    74. mov wc.hCursor,eax
    75. INVOKE WSAStartup,101h,offset wsadata
    76. INVOKE RegisterClassEx,addr wc
    77. INVOKE CreateDialogParam,hInstance,offset DlgName,0,0,0
    78. mov hDlg,eax
    79. INVOKE ShowWindow,hDlg,SW_SHOWNORMAL
    80. INVOKE UpdateWindow,hDlg
    81. .WHILE TRUE
    82.     INVOKE GetMessage,addr msg,0,0,0
    83.     .BREAK .IF (!eax)
    84.     INVOKE TranslateMessage,addr msg
    85.     INVOKE DispatchMessage,addr msg
    86. .ENDW
    87. INVOKE WSACleanup
    88. mov eax,msg.wParam
    89. ret
    90. WinMain endp
    91.  
    92.  
    93. WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
    94. .IF uMsg==WM_DESTROY
    95.     invoke closesocket,hSock1
    96.     invoke PostQuitMessage,0
    97. .ELSEIF uMsg==WM_SHOWWINDOW
    98.  
    99.       invoke socket,PF_INET,SOCK_STREAM,0
    100.                 mov hSock1,eax
    101.                         invoke inet_addr,addr HostName
    102.                         .if eax==INADDR_NONE
    103.                                 invoke gethostbyname,addr HostName
    104.                                 mov eax,[eax+12]
    105.                                 mov eax,[eax]
    106.                                 mov eax,[eax]
    107.                                 mov SA.sin_addr,eax
    108.                         .else
    109.                                 mov SA.sin_addr,eax
    110.                         .endif
    111.                         mov SA.sin_family,AF_INET
    112.                 invoke htons,80
    113.                 mov SA.sin_port,ax
    114.                 invoke WSAAsyncSelect,hSock1,hWnd,WM_SOCKET,FD_CONNECT or FD_READ or FD_CLOSE
    115.                         invoke connect,hSock1,addr SA,sizeof SA
    116.  
    117.  
    118. .ELSEIF uMsg==WM_COMMAND
    119.         mov eax,wParam
    120.         .IF ax==1003
    121. invoke closesocket,hSock1
    122. invoke ExitProcess,0
    123.         .ENDIF
    124.  
    125.  
    126. .ELSEIF uMsg==WM_SOCKET
    127.     mov eax,lParam
    128.     and eax,0FFFFh
    129.  
    130.     .IF ax==FD_CONNECT
    131.         invoke send,hSock1,addr GetTemplate,eax,0
    132.             invoke recv,hSock1,offset BufferHTML,1024,0
    133.  
    134.  
    135.     .ELSEIF ax==FD_READ
    136.             invoke recv,hSock1,offset BufferHTML,1024,0
    137.  
    138.         .ENDIF
    139.     .ELSEIF ax==FD_CLOSE
    140.         invoke closesocket,hSock1
    141.     .ENDIF
    142.  
    143.     INVOKE DefWindowProc,hWnd,uMsg,wParam,lParam
    144.     ret
    145. xor eax,eax
    146. ret
    147. WndProc endp
    148.  
    149. end program
     
  16. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    trr
    Ты переводишь сокет в асинхронный режим вызовом WSAAsyncSelect.
    Соеденение происходит, просто connect возвращает управление раньше,поэтому и -1.
    Если убрать WSAAsyncSelect, то в блокирующем режиме он будет ждать установления соеденения и будет возвращать 0.

    Сообщение о коннекте тоже приходит, кстати.
     
  17. trr

    trr New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2006
    Сообщения:
    52
    Теперь разобрался. Думал -1 это не нормально.
    Вот что пришло от yahoo.ru:
    Код (Text):
    1. HTTP/1.1 301 Moved Permanently
    2. Date=Fri, 17 Oct 2008 09:59:05 GMT
    3. Location=http://ru.yahoo.com/
    4. Connection=close
    5. Transfer-Encoding=chunked
    6. Content-Type=text/html; charset=utf-8
    Чуствую, так и не скачаю я эту страницу :)
     
  18. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    trr
    Ты ее пробавал в браузере набирать?
    Сравни то, что появляется в строке браузера при наборе yahoo.ru, и что за страница вылезает, когда ввести туда тот адрес по которому ты пытаешься законнектиться.
     
  19. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    wget rockz! :lol: