Въведение в Socket програмиране в PHP
Всички езици за програмиране осигуряват механизма за осъществяване на комуникацията между сървъра и клиента. Съгласно този механизъм, приложението позволява на сървъра и клиента да обменят данни между тях. Подобно на другите езици за програмиране, PHP също ни предоставя този механизъм. Сокетното програмиране може да се дефинира като подход на програмиране, който има сървъра и клиента като приложение, където трябва да се установи връзка между двамата, за да се улесни комуникацията между тях. По отношение на PHP, той също ни позволява да приложим концепцията за програмиране на сокет. В тази статия ще научим как да реализираме това програмиране на сокети с помощта на PHP език за програмиране.
Методи за клас сокет
Методите на клас сокет са специалните функции, които ни позволяват да реализираме програмирането на сокета. Програмата, която трябва да бъде написана, за да донесе функционалностите на сокетното програмиране, използва предварително зададените функции на сокета. Тези функции се състоят от операторите, които изпълняват действителната роля в програмирането на сокет. По-долу са някои от функциите на гнездото.
- Socket_accept: Това е една от много често срещаните функции на сокета, която се използва за приемане на връзка на сокет. Основната роля на тази функция е да позволи на връзката да бъде приета всеки път, когато дадена заявка достигне.
- Socket_addrinfo_bind: Тази функция се използва за добавяне на предоставената информация към сокета. Приетата информация трябва да бъде присвоена на гнездото, за да се улесни прилагането му.
- Socket_clear_error: Тази функция се използва за изчистване на грешката, която е на сокета. В допълнение към това, тази функция изчиства и грешката в последния код.
- Socket_close: Както посочва името, тази функция се използва за затваряне на ресурса, който принадлежи към сокета.
- Socket_connect: Този метод се използва за създаване на сокетна връзка. В сокетното програмиране програмата започва с установяването на връзката, която може да се осъществи с помощта на тази функция.
- Socket_create: Този метод е свързан със създаването на сокета. Сокетът, създаден по този метод, работи като крайна точка на връзката.
- Socket_create_listen: Тази функция се използва за отваряне на гнездото на посочения порт, който приема връзката. Както се казва в името, това помага при отваряне на гнездото за слушане.
- Socket_create_pair: Този метод обикновено се използва в приложението, което трябва да въведе сложната част от програмирането на сокет в употреба. Той помага за създаването на неразличими гнезда и тези, които се съхраняват в масива.
- Socket_get_option: Този метод се използва за получаване на опциите за сокета. Гнездото се състои от няколко опции, които трябва да се използват в съответствие с приложението. Използвайки този метод, можем да получим всички онези опции, които има гнездото.
- Socket_getsockname: Този метод се използва за търсене на локалния регион на избрания сокет и в замяна може да получи подробности, свързани с хоста / порта или пътя към файловата система на Unix. Какъвто и да е резултатът е напълно зависим от типа.
Пример за сокет клиент
В този раздел ще видим кода, който ще се използва за реализиране на програмиране от страна на клиента. Примерът, споменат по-долу, ще съдържа данни за публикацията и хоста, които ще бъдат използвани за създаване на връзка на сокета. Една връзка е установена, тя обменя някои от съобщенията и очаква отговор от сървъра.
<_?php$port_number = 1230;
$IPadress_host = "127.0.0.1";
$hello_msg= "This is server";
echo "Hitting the server :".$hello_msg;
$socket_creation = socket_create(AF_INET, SOCK_STREAM, 0) or die("Unable to create connection with socket\n");
$server_connect = socket_connect($socket_creation, $IPadress_host, $port_number) or die("Unable to create connection with server\n");
socket_write($socket_creation, $hello_msg, strlen($hello_msg)) or die("Unable to send data to the server\n");
$server_connect = socket_read ($socket_creation, 1024) or die("Unable to read response from the server\n");
echo "Message from the server :".$server_connect;
socket_close($socket_creation);
?>
В горния пример номерът на порта е 1230, в който програмата се опитва да се свърже. IP адресът на хоста ще бъде IP на localhost. Ако някой има желание да взаимодейства с отдалечения сървър, може да спомене IP адреса на сървъра. Тогава съобщението ще бъде изпратено до сървъра, който ще бъде показан на страницата за отговор. Създаването на сокета ще бъде обработено след това. В тази програма има подходящ механизъм за справяне с грешката чрез метода на die. Ако нещо се обърка в този случай методът на die се отменя и съобщението, дадено в него, се появява.
Пример за сокет сървър
Примерът, подробно описан в този раздел, ще има PHP кодове, които ще се използват за изпълнение на програмирането на сокета от страна на сървъра. Подробностите за IP и номера на порта, използвани в последния пример, ще останат същите и в този пример. Основната разлика в този пример ще бъде основната разлика, която го отделя от езика за програмиране от страна на клиента. Позволява на процеса да разбере PHP кода за програмиране от страна на сървъра.
<_?php$port_number = 1230;
$IPadress_host = "127.0.0.1";
set_time_limit(0);
$socket_creation = socket_create(AF_INET, SOCK_STREAM, 0) or die("Unable to create socket\n");$socket_outcome = socket_bind($socket_creation, $IPadress_host, $port_number ) or die("Unable to bind to socket\n");
$socket_outcome = socket_listen($socket_creation, 3) or die("Unable to set up socket listener\n");
$socketAccept = socket_accept($socket_creation) or die("Unable to accept incoming connection\n");
$data = socket_read($socketAccept, 1024) or die("Unable to read input\n");
$data = trim($data);
echo "Client Message : ".$data;
$outcome = strrev($data) . "\n";
socket_write($socketAccept, $outcome, strlen ($outcome)) or die("Unable to write output\n");
socket_close($socketAccept);
socket_close($socket_creation);
?>
В горния пример програмата е разработена за работа в localhost. IP адресът, споменат тук, принадлежи на localhost и номерът на порта може да изпълнява TCP и UDP услугата за това. Първоначалната стъпка винаги е създаването на сокета, тъй като това е нещо, което ще се използва в цялата програма. По-късно гнездото е свързано с посочените стойности, които ще помогнат при функционирането му. Методите, използвани в тази програма, имат предварително определеното значение, което може да се използва за конкретна цел. След като всичко върви добре, програмата ще работи съответно и в крайна сметка ще затвори връзката на сокета.
Заключение - Socket програмиране в PHP
Езикът за програмиране на сокета се използва, за да позволи на приложението да работи на сървъра и модела на клиента. Този подход на програмиране ни позволява да установим връзката между сървъра и клиента, така че обменът на данни да бъде улеснен. За да стане лесно и удобно програмирането на сокета, PHP е предоставил предварително зададените методи, при които всички методи имат някои уникални задачи, които са им възложени.
Препоръчителни статии
Това е ръководство за Socket програмиране в PHP. Тук обсъждаме методите, които ни позволяват да реализираме програмиране на сокет и как дава възможност на сървъра и клиента да обменят данни между тях. Можете също да разгледате и другите ни свързани статии, за да научите повече -
- Въведение в капсулирането в PHP
- Конструктор в PHP | Видове конструктор
- Какво е преимущество в PHP?
- PHP магически константи
- PHP рекурсивна функция
- Примери за PHP струнни функции
- Ръководство за програмиране на сокети в Java