Сокети: сервер на php

Сокети: Сервер на PHP

Відео: php web: Сокети, урок 9!

У попередній статті я розповідав про сокети на PHP. І сказав, що необхідно написати сервер, що приймає запити і віддає відповіді. І клієнта, що посилає запити до сервера. У цій статті ми розберемо код для класичного сервера, що приймає число, який підносить його в квадрат і повертає результат клієнтові.




відразу наводжу код сервера на PHP з докладними коментарями:

lt ;?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))lt;0){
// AF_INET - сімейство протоколів
// SOCK_STREAM - тип сокета
// SOL_TCP - протокол
echo
"Помилка створення сокета"-
}
else{
echo
"Сокет створений n"-
}
// Зв`язуємо дескриптор сокета з вказаною адресою і портом
if(($ ret = socket_bind($ sock, $ address, $ port))lt;0){
echo
"Помилка зв`язку сокета з адресою і портом"-
}
else{
echo
"Сокет успішно пов`язаний з адресою і портом n"-
}
// Починаємо прослуховування сокета (максимум 5 одночасних з`єднань)
if(($ ret = socket_listen($ sock,5))lt;0){
echo
"Помилка при спробі прослуховування сокета"-
}
else{
echo
"Чекаємо підключення клієнта n"-
}
do{
// Приймаємо з`єднання з сокетом
if(($ msgsock = socket_accept($ sock))lt;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) -
break2-
}
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
"Сокет успішно закритий"-
}
?gt;



Даний код я постарався ретельно прокоментувати, тому, сподіваюся, Вам в ньому все зрозуміло. Головне зрозуміти наступне: сервер - це безперервно виконується скрипт, який просто чекає підключення клієнтів. Потім приймає запит і на підставі цього запиту, який повертає клієнту відповідь. Це найголовніше, що Вам необхідно зрозуміти.

Відео: Клієнт-сервер на сокетах!

А в наступній статті ми з Вами напишемо клієнта на PHP, який і буде підключатися до даного сервера і відправляти різні запити.

Поділися в соціальних мережах:

Схожі
Сокети: клієнт на phpСокети: клієнт на php
Nodejs. Клієнти і сервери.Nodejs. Клієнти і сервери.
Як зробити моніторинг сервераЯк зробити моніторинг сервера
Як дізнатися http-заголовки сервера через curlЯк дізнатися http-заголовки сервера через curl
Що таке реплікація в mysql?Що таке реплікація в mysql?
Відправка cookie через curlВідправка cookie через curl
Відправка асинхронних запитів на jquery.Відправка асинхронних запитів на jquery.
Як дізнатися реальний ip-адреса відвідувачаЯк дізнатися реальний ip-адреса відвідувача
Відправка get-запитів в curlВідправка get-запитів в curl
Що таке html5 websockets?Що таке html5 websockets?
» » Сокети: сервер на php