Несколько вопросов по интернет функциям

Тема в разделе "WASM.BEGINNERS", создана пользователем Satell, 2 июн 2007.

  1. Satell

    Satell New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    23
    прошу исходники на masm :)
    1. как проверить есть ли подключение к интернету?
    2. как загрузить вебстраницу из интернета, просто и через прокси
    3. нужен простой исходник клиент-сервера
    4. как передать файл по сети
    спасибо.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    1) InternetGetConnectedState
    3) поиск по васму рулит
    4) почитал бы для начала про сокеты (тут же на васме). Если надо апишками, то извиняйте. Хотя, судя по твоему посту в вирусологии, тебе нужны обычные send/recv
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Судя по
    ему нужно "здесь и сейчас, и нахаляву".
     
  4. Satell

    Satell New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    23
    deleted
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    впервые о таком слышу. Попробуй использовать структуру sockaddr_in (параметр для ип - sin_addr (никаких подпараметров)). По крайней мере у меня всегда работало.

    984АЕ4D5. Это число начинается с цифры. Поэтому и не выдет ошибку. Остатьные начинаются с буквы. Поэтому поставь 0 вначале числа.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    это она и есть, sin_addr - это структура in_addr, которая представляет собой union для удобного хранения адреса. При большом желании весь sin_addr можно рассмотреть как DWORD, что ты видимо и делал
     
  7. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    именно это и делал :) Начинал учиться по исходникам, поэтому и в голову не приходило, что там может быть что-то еще. Главное, что работает ;)
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    MSoft
    Ну вот, а традиционно это юнион вида

    union {
    DWORD
    struct { byte [4] };
    struct { word [2] };
    }

    (схематично). Удобно так в сишнике отдельные компоненты адреса менять ;)
     
  9. shinoda

    shinoda New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2007
    Сообщения:
    36
    Все это есть на васме, поищи в разделе исходники
     
  10. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    1)
    Код (Text):
    1. invoke InternetAttemptConnect,0
    2. invoke InternetGetConnectedState,offset ConnectedState,0
    Здесь если EAX!=0, то подключение есть, иначе нет. Это один из способов возможно самый нормальный, еще можно использовать InternetGetConnectedStateEx из той же WinInet.DLL. Эти две функции находятся в WinInet.DLL. Через сокеты самый простой - WSAStartup() -> gethostbyname("www.google.com"), хотя тут надо смотреть не возьмет ли кто DNS-имя из кеша, и в этом случае делать connect() c любой заранее доступной тачкой, и это явно будет не очень красиво, да и не надежно.
     
  11. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    2) Юзай WinInet или WinHttp. Вызывать примерно так для WinHttp - WinHttpConnect() -> WinHttpOpenRequest() -> если нужно добавляем заголовки к запросу WinHttpAddRequestHeaders() -> WinHttpSendRequest -> WinHttpReceiveResponse() -> WinHttpQueryDataAvailable() -> WinHttpReadData() -> WinHttpCloseHandle(). Для WinInet такая цепочка действий - InternetConnect() -> HttpOpenRequest() -> также можно добавить заголовки HttpAddRequestHeaders() -> HttpSendRequest() -> в цикле (InternetQueryDataAvailable -> InternetReaderFile ) -> InternetCloseHandle(). Если не понятны параметры кидай вопросы сюда. Вот линки для чтения: http://rsdn.ru/article/inet/wininet_delphi.xml, http://rsdn.ru/article/inet/wininet.xml
     
  12. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431