За последние 24 часа нас посетили 17696 программистов и 1717 роботов. Сейчас ищут 874 программиста ...

Популярно о сокетах

Тема в разделе "PHP для новичков", создана пользователем rar, 18 окт 2009.

  1. rar

    rar Активный пользователь

    С нами с:
    9 дек 2008
    Сообщения:
    206
    Симпатии:
    0
    Адрес:
    Москва
    Расскажите в популярной форме о технологии сокетов. Зачем они нужны и зачем они могут понадобиться.
     
  2. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Для сетевого взаимодействия.

    Сокеты работают на уровне TCP/IP.

    HTTP, FTP, SMTP - это уровень выше.
     
  3. rar

    rar Активный пользователь

    С нами с:
    9 дек 2008
    Сообщения:
    206
    Симпатии:
    0
    Адрес:
    Москва
    Применение какое? Как в веб-программировании они могут пригодиться?
     
  4. sorteros

    sorteros Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    54
    Симпатии:
    0
    Если примитивно, в рамках протокола http - имитация действий web-браузера.
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Сокет - пара адрес:порт. При создании сокета на заданом IP (это должен быть IP машины, на котороый выполнется программа) создается порт с заданым номером и привязывается к конкретному IP-адресу.
    [​IMG]
    По скольку сокет - это IP + номер порта, сокеты находятся на сетевом уровне (IP). С помощью сокета можно установить соединение с другим сокетом по протоколу TCP или UDP. Это поротоколы на транспортном уровне, пользователь сокетов не заботится о передачи данных для установления соединения. Следует понимать, что все передаваемые данные - это биты. ACSII-символ - это тоже байты (2 байта - символ). Поэтому некоторые протоколы (например HTTP) выглядят человекопонятно.
    Расмотрим работу с скетами на примере протокола HTTP и функции fsockopen.
    PHP:
    1. <?php
    2. // Подключаемся к сокету
    3. // Если не указано иначе, подключение осуществляется по протоколу TCP - то, что нам нужно.
    4. $fp = fsockopen('77.234.201.222', 80);
    5. // Составляем запрос
    6. $query = "GET / HTTP/1.0\r\nHost: [url=http://www.php.ru]www.php.ru[/url]\r\n\r\n";
    7. // Пишем в сокет
    8. fwrite($fp, $query);
    9. // Читаем ответ
    10. while (!feof($fp))
    11. {
    12.      echo fgets($fp, 128);
    13. }
    14. ?>
    Функция fsockopen коннектится к открытому сокету в сети. При этом выбор порта (и создание сокета), через котрый осуществляется прием/передача данных открывается системой автоматически. С помощью других функций можно открыть сокет на заданом порту и работать через него.
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Парсить сайты, получать данные с других приложений, обмениваться данными с другими серверами.
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Ну, парсить - это совсем другое. Сокеты нужны для передачи информации в сеть.
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    еп, это уже 4 тема...