Разработка клиент серверных приложения php

Создание клиент-серверного приложения

Ниже приведен пример, который иллюстрирует реализацию простого сервера, отвечающего на запросы.

В листинге надо изменить адрес и порт. Подключиться к этому серверу можно при помощи простого сетевого клиента, например, командой, telnet 192.168.1.53 10000. Конечно, в ней надо указать верные адрес и порт. Все, что будет посылаться на сервер, будет отображаться и возвращаться клиенту обратно. Для прекращения сеанса связи нужно ввести команду quit.

error_reporting (E_ALL); /* Позволяет скрипту бесконечно удерживать связь. */ set_time_limit (0); $address = '192.168.1.53'; /* установите свои значения */ $port = 10000; if (($sock = socket (AF_INET, SOCK_STREAM, 0)) < 0) < echo " Ошибка в socket(): " . strerror ($sock) . "\n"; >if (($ret = bind ($sock, $address, $port)) < 0) < echo "Ошибка в bind(): " . strerror ($ret) . "\n"; >if (($ret = listen ($sock, 5)) < 0) < echo "Ошибка в listen(): " . strerror ($ret) . "\n"; >do < if (($msgsock = accept_connect($sock)) < 0) < echo "Ошибка в accept_connect(): " . strerror ($msgsock) . "\n"; break; >do < $buf = ''; $ret = read ($msgsock, $buf, 2048); if ($ret < 0) < echo "Ошибка в read(): " . strerror ($ret) . "\n"; break 2; >if ($ret == 0) < break 2; >$buf = trim ($buf); if ($buf == 'quit') < close ($msgsock); break 2; >$talkback = "Вы ввели '$buf'.\n"; write ($msgsock, $talkback, strlen ($talkback)); echo "$buf\n"; > while (TRUE); close ($msgsock); > while (TRUE); close ($sock);

Код соответствующего клиентского приложения приведен ниже.

Это приложение получает страницу через HTTP, отправляет запрос HEAD, выводит ответ и завершается.

error_reporting (E_ALL); echo "

TCP/IP Connection

\n"; /* Получить порт службы WWW (iau?ii: 80). */ $service_port = getservbyname ('www', 'tcp'); /* Получить IP адрес хоста. */ $address = gethostbyname ('www.php.net'); /* Создать TCP/IP socket. */ $socket = socket (AF_INET, SOCK_STREAM, 0); if ($socket < 0) < echo "Ошибка в socket(): " . strerror ($socket) . "\n"; >else < "socket создан: " . strerror ($socket) . "\n"; >echo "Попытка подключиться к '$address' (порт '$service_port') . "; $result = connect ($socket, $address, $service_port); if ($result < 0) < echo "Ошибка в connect(): ($result) ". strerror($result) ."\n"; >else < echo "OK.\n"; >$in = "HEAD / HTTP/1.0\r\n\r\n"; // посылаемые данные $out = ''; // буфер для приема данных echo "Sending HTTP HEAD request. "; // послать запрос заголовка HTTP write ($socket, $in, strlen ($in)); echo "OK.\n"; echo "Reading response:\n\n"; // принять ответ (заголовок) while (read ($socket, $out, 2048)) < echo $out; >echo "Closing socket. "; close ($socket); echo "OK.\n\n";

Источник

Читайте также:  Алгоритмические языки программирования лекция
Оцените статью