Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
mikello
0 / 6 / 0
Регистрация: 19.11.2017
Сообщений: 178
#1

Простой сервер (sockets) - PHP

01.06.2018, 20:57. Просмотров 126. Ответов 3
Метки нет (Все метки)

Есть простейший сервер на сокетах, написанный на PHP (исходный код находится в файле server.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
<?php
error_reporting(E_ALL);
 
/* Позволяет скрипту ожидать соединения бесконечно. */
set_time_limit(0);
 
/* Включает скрытое очищение вывода так, что мы видим данные
 * как только они появляются. */
ob_implicit_flush();
 
$address = '192.168.1.53';
$port = 10000;
 
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    echo "Не удалось выполнить socket_create(): причина: " . socket_strerror(socket_last_error()) . "\n";
}
 
if (socket_bind($sock, $address, $port) === false) {
    echo "Не удалось выполнить socket_bind(): причина: " . socket_strerror(socket_last_error($sock)) . "\n";
}
 
if (socket_listen($sock, 5) === false) {
    echo "Не удалось выполнить socket_listen(): причина: " . socket_strerror(socket_last_error($sock)) . "\n";
}
 
do {
    if (($msgsock = socket_accept($sock)) === false) {
        echo "Не удалось выполнить socket_accept(): причина: " . socket_strerror(socket_last_error($sock)) . "\n";
        break;
    }
    /* Отправляем инструкции. */
    $msg = "\nДобро пожаловать на тестовый сервер PHP. \n" .
        "Чтобы отключиться, наберите 'выход'. Чтобы выключить сервер, наберите 'выключение'.\n";
    socket_write($msgsock, $msg, strlen($msg));
 
    do {
        if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
            echo "Не удалось выполнить socket_read(): причина: " . socket_strerror(socket_last_error($msgsock)) . "\n";
            break 2;
        }
        if (!$buf = trim($buf)) {
            continue;
        }
        if ($buf == 'выход') {
            break;
        }
        if ($buf == 'выключение') {
            socket_close($msgsock);
            break 2;
        }
        $talkback = "PHP: Вы сказали '$buf'.\n";
        socket_write($msgsock, $talkback, strlen($talkback));
        echo "$buf\n";
    } while (true);
    socket_close($msgsock);
} while (true);
 
socket_close($sock);
?>
Не понимаю, где должен находиться файл server.php, и как увидеть результаты работы сервера.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2018, 20:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Простой сервер (sockets) (PHP):

Разработать программу управления данными с использованием технологии «n-уровневого приложения» (сервер БД – Веб сервер – Apache).
В СУБД Разработайте базу данных «Ремонт автомобилей» со следующей структурой:...

Сервер на php (клиент сервер)
делаю клиент сервер для программы на андроид...

Свой простой сервер
Здравствуйте. Имеется такая задача: Напишите простой сервер, который может...

Проверка того что к php скрипту обращается сервер хостинга а не простой пользователь
есть некоторый php скрипт, на хосте есть возможность выполнять этот скрипт...

PHP sockets
Всем доброго времени суток. Начал немного изучать веб сокеты. Сейчас столкнулся...

Long polling, web sockets
Доброго времени суток. Дайте ссылку на какую нить книженцию по лонг пунингу...

3
Jewbacabra
Эксперт PHP
3096 / 2683 / 1228
Регистрация: 24.04.2014
Сообщений: 8,211
01.06.2018, 22:42 #2
Цитата Сообщение от mikello Посмотреть сообщение
Не понимаю, где должен находиться файл server.php
Где угодно
Цитата Сообщение от mikello Посмотреть сообщение
как увидеть результаты работы сервера.
Запустить его php server.php и подключиться к заданному ip:port telnet клиентом
1
mikello
0 / 6 / 0
Регистрация: 19.11.2017
Сообщений: 178
02.06.2018, 01:30  [ТС] #3
Jewbacabra, ок, с этим понятно.

Еще такой вопрос. На каком уровне будет происходить взаимодействие Telnet и веб-сервера? На прикладном или на транспортном(ведь сокеты относятся к транспортному уровню)?
0
Jewbacabra
Эксперт PHP
3096 / 2683 / 1228
Регистрация: 24.04.2014
Сообщений: 8,211
02.06.2018, 14:09 #4
Можно считать и примитивным прикладным протоколом. Хотя все самое интересное происходит на транспортном уровне
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2018, 14:09
Привет! Вот еще темы с решениями:

загрузка файла на сервер с вашего сайта на чужой сервер под вашим логином!
Извените зараннее если ошибся разделом, не нашел куда можно отнести данную тему...

Sockets, клиент-сервер
Здраствуйте, у меня такая проблема мне нужно связать два приложения, мне...

Sockets, сервер вылетает при Bind-е
пытаюсь создать серв: Int64 ip64=Convert::ToInt64(mysock-&gt;ip);...

Windows sockets приложения с сокетами, написание приложения сервер-клиент
Написать программу-сервер и программу - клиент. Клиент читает файл, пересылает...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru