Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/65: Рейтинг темы: голосов - 65, средняя оценка - 4.98
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980

Сокет-сервер на php

19.02.2012, 17:59. Показов 12334. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте. извините, если пишу не туда, просто не знаю, куда..))

объясните, пожалуйста, что такое сокет сервер. говорят, что, например, с его помощью удобно сделать чат. мол с таким сервером загружается не весь чат постоянно, а как то раздельно.

не знаю, что и как, правда ли все это))
может вообще не для этого нужен сокет сервер.

и еще, этот сервер на комп устанавливать надо? или можно файлы на хостинг загрузить и установить?))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2012, 17:59
Ответы с готовыми решениями:

Сокет сервер на php
Друзья помогите разобраться. Есть код сокет сервера php взял его с мануала. Вот что я делал: 1)Создал файл index.php и вставил нижний...

php и сервер сокет
Доброго времени суток уважаемые. Интересует следующее: как можно организовать чат между exe и php, чтобы php являлся сервером а exe...

Flash-crossdomain.xml и PHP сокет сервер
Приветствую друзья. Подскажите пожалуйста, что надо написать на php-сокет-сервере, что бы он отдавал файл политики для flash-клиента....

14
 Аватар для suharik
261 / 247 / 57
Регистрация: 03.09.2010
Сообщений: 805
20.02.2012, 15:49
Да,Сокеты отлично подходят для программ которые требуют момнтельное обновление контента. Чат, Браузерная игрушка. Я и сам неочень понимаю что-это, но видемо с Вашим постом опять начну мучить гугл) Очень хочется узнать, как же работает Сокет сервера на практике.
1
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
20.02.2012, 16:51  [ТС]
suharik, дайте знать, если что то нагуглите, пожалуйста)) а то я с пхп то только на начальном уровне знаком. а сокет вообще не понимаю, то ли это программа какая, то ли код какой то специальный, то ли просто на php куда то запросы по особенному отправляются))
0
239 / 236 / 43
Регистрация: 16.03.2011
Сообщений: 750
20.02.2012, 16:56
Для начала давайте определим что такое сервер и клиент. Итак, сервер - это специальная программа, обычно запущенная на отдельном компьютере (хосте, от слова host(eng.) - хозяин), и выполняющая некий круг задач. Клиент, в свою очередь - программа, которая запрашивает сервер выполнить то или иное действие (задачу) и вернуть полученные данные клиенту. На хосте для работы сервера обычно выделяется порт (port). К этому порту и должен будет обращаться клиент. Клиент для связи с портом хоста, который соединен в свою очередь с нужным сервером (программой), создает сокет.
Советую прочитать документацию на php.net
1
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
20.02.2012, 17:04  [ТС]
r36, тогда получается, что любое соединение с сервером - это сокет?))
0
239 / 236 / 43
Регистрация: 16.03.2011
Сообщений: 750
20.02.2012, 17:46
В Internet домене сокет - это комбинация IP адреса и номера порта, которая однозначно определяет отдельный сетевой процесс во всей глобальной сети Internet. Два сокета, один для хоста-получателя, другой для хоста-отправителя, определяют соединение для протоколов, ориентированных на установление связи, таких, как TCP.
Можно почитать тут
1
 Аватар для suharik
261 / 247 / 57
Регистрация: 03.09.2010
Сообщений: 805
20.02.2012, 18:35
Вот нагуглил статейку

Не так давно меня попросили рассказать про сокеты на PHP. Вообще я планирую написать ещё несколько статей в ближайшее время по этой теме, а в этой статье я расскажу о том, что такое сокеты в PHP. Чтобы Вы уже могли понять, нужны они Вам или нет.

Сокет - это интерфейс взаимодействия клиента и сервера. Интерфейс - это, в свою очередь, правило, по которым происходит общение между клиентом и сервером. Чтобы стало понятнее, приведу пример из обычной жизни. Например, люди общаются с помощью слов на конкретном языке. Это наш с Вами интерфейс. В зависимости от входящих слов мы формируем образ у себя в голове, и отдаём ответ, в виде опять же слов. Другой пример, дельфины общаются в ультразвуком спектре, и это их интерфейс.

Надеюсь, про интерфейс теперь понятно, это правило взаимодействия. Теперь про клиента. Клиентом может выступать как человек, формирующий определённые запросы к серверу, так и программа, написанная на любом языке программирования, способном обмениваться данными с удалённым сервером. Сервер - это машина, ждущая подключения клиентов, принимающая от них запросы, и в зависимости от запросов, возвращающая ответ.

Кратко резюмирую, что же такое сокет: есть клиент, есть сервер, есть правила взаимодействия (интерфейс), клиент, согласно этим правилам, посылает запрос, а сервер данный запрос принимает и, согласно тем же правилам, даёт ответ.

Как видите, всё совсем не сложно. Очень здорово то, что клиент и сервер могут быть написаны на совсем разных языках программирования и могут находиться друг от друга за тысячи километров. Мы же с Вами будет писать и клиент, и сервер в будущих статьях на языке PHP.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
  header('Content-Type: text/plain;'); //Мы будем выводить простой текст
  set_time_limit(0); //Скрипт должен работать постоянно
  ob_implicit_flush(); //Все echo должны сразу же отправляться клиенту
  $address = 'localhost'; //Адрес работы сервера
  $port = 1985; //Порт работы сервера (лучше какой-нибудь редкоиспользуемый)
  if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
    //AF_INET - семейство протоколов
    //SOCK_STREAM - тип сокета
    //SOL_TCP - протокол
    echo "Ошибка создания сокета";
  }
  else {
    echo "Сокет создан\n";
  }
  //Связываем дескриптор сокета с указанным адресом и портом
  if (($ret = socket_bind($sock, $address, $port)) < 0) {
    echo "Ошибка связи сокета с адресом и портом";
  }
  else {
    echo "Сокет успешно связан с адресом и портом\n";
  }
  //Начинаем прослушивание сокета (максимум 5 одновременных соединений)
  if (($ret = socket_listen($sock, 5)) < 0) {
    echo "Ошибка при попытке прослушивания сокета";
  }
  else {
    echo "Ждём подключение клиента\n";
  }
  do {
    //Принимаем соединение с сокетом
    if (($msgsock = socket_accept($sock)) < 0) {
      echo "Ошибка при старте соединений с сокетом";
    } else {
      echo "Сокет готов к приёму сообщений\n";
    }
    $msg = "Hello!"; //Сообщение клиенту
    echo "Сообщение от сервера: $msg";
    socket_write($msgsock, $msg, strlen($msg)); //Запись в сокет
    //Бесконечный цикл ожидания клиентов
    do {
      echo 'Сообщение от клиента: ';
      if (false === ($buf = socket_read($msgsock, 1024))) {
        echo "Ошибка при чтении сообщения от клиента";       }
      else {
        echo $buf."\n"; //Сообщение от клиента
      }
      //Если клиент передал exit, то отключаем соединение
      if ($buf == 'exit') {
        socket_close($msgsock);
        break 2;
      }
      if (!is_numeric($buf)) echo "Сообщение от сервера: передано НЕ число\n";
      else {
        $buf = $buf * $buf;
        echo "Сообщение от сервера: ($buf)\n";
      }
      socket_write($msgsock, $buf, strlen($buf));
    } while (true);
  } while (true);
  //Останавливаем работу с сокетом
  if (isset($sock)) {
    socket_close($sock);
    echo "Сокет успешно закрыт";
  }
?>

Данный код я постарался тщательно прокомментировать, поэтому, надеюсь, Вам в нём всё понятно. Главное понять следующее: сервер - это непрерывно выполняющийся скрипт, который просто ждёт подключения клиентов. Затем принимающий запрос и на основании этого запроса, возвращающий клиенту ответ. Это самое главное, что Вам необходимо понять.
3
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
20.02.2012, 18:57  [ТС]
вот все таки я наверно не понимаю до конца)) эти сервер и клиент на хостинге можно сделать? я вот попробовал, что то не получается)) страница просто долго загружается и ничего не выводит. адрес сервера я вроде заменил...
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
21.02.2012, 22:28
объясните пожалуйста:
как пхп может открывать порт и СЛУШАТЬ его, если скрипт выполняется только когда к нему обращаются?
надеюсь вопрос понятен
0
 Аватар для suharik
261 / 247 / 57
Регистрация: 03.09.2010
Сообщений: 805
22.02.2012, 13:36
Можете заметить одну штуку из статейки

PHP
1
 set_time_limit(0); //Скрипт должен работать постоянно
Тоесть скрипт запускается и работает постоянно. Ну а у вскрипте уже работает
PHP
1
2
//Бесконечный цикл ожидания клиентов
    do {...
Этот цикл как раз и читает с сокета инфу.
Вот как только я допилю свой первый сокет сервер, сразу расскажу подробности, ибо пока сам доконца не понял как это работает))
1
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
22.02.2012, 13:40  [ТС]
suharik, глупый вопрос наверно... но сокет сервер на обычный хост ставится?)) я просто, как написал выше, поставил коды из статьи на хост, там ничего не происходит. хотя в статье пишется, что отправляются какие то значения и какие то должны возвращаться, а у меня просто долго страничка грузится и все.

и еще. если скрипт будет работать бесконечно долго, он будет жрать трафик и грузить сервер, да же?) или его сам хост остановить может?
0
 Аватар для suharik
261 / 247 / 57
Регистрация: 03.09.2010
Сообщений: 805
22.02.2012, 14:27
там ничего не происходит
А что надо то? )) Конечно ничего не произойдет, так как надо получать данные выданные сервером и выводить на сторне клиента.
Обращатся к серверу можно через WebSocket
Загляните в Википедию.
И скрипт надо запускать не через браузер, а сервером. Например через крон. ИМХО
0
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
22.02.2012, 14:52  [ТС]
suharik, извините, не совсем корректно спросил. я нашел статью, в котороый на основе сокетов строят клиент и сервер. там приблизительно тот же код, что и здесь, в посте. я попробовал это собрать, не получилось. не знаю, как показать этот код, поэтому покажу ссылку, если не удалят))
вот ссылка
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
22.02.2012, 23:40
хорошо,предположим что у нас есть простенький скрипт который добавляет пришедший текст в txt
есть 2 клиента,написанных на любом сис языке. они на разных компах и шлют запросы к нашему скрипту.
сначала подключается первый(http://www.blablabal/script.php)
скрипт открывает порт и начинает "общаться с клиентом"
потом подключается второй клиент и вот вопрос: будет создан как бы отдельный экземпляр(как при обращении множества запросов) или клиент подключится в уже созданный экземпяр..
не знаю как по другому объяснить)

Добавлено через 8 часов 46 минут
или он будет обрабатывать всех клиентов в очереди?
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.02.2012, 15:47
наверх
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.02.2012, 15:47
Помогаю со студенческими работами здесь

Как грамотно защитить сокет-сервер на PHP паролем
Приложение командной строки PHP, обслуживающее сервер сокетов, сделано в соответствии со следующими рекомендациями: ...

сокет сервер
&lt;?php header('Content-type: text/html; charset=windows-1251'); set_time_limit(0); ob_implicit_flush(); $address =...

Как открыть сокет через прокси сервер?
Помогите пожалуста: как как открыть сокет через прокси сервер? наверно сначала fsockopen до прокси, а затем как-то fsockopen до...

Сервер некорректно отвечает при запросе через сокет.
Здравствуй, многоуважаемый All! Возникла следующая проблема. У меня есть два сервака с PHP. На первом лежит один из...

Передача на сокет сервер чисел в 16-ричной системе счисления
Добрый вечер! Проблема в том что при передаче чисел первым скриптом они принимаются как надо... Тоесть был отправлен сокет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru