Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2019, 13:01   #1
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию Запрос по протоколу tcp php

Подскажите как соединится с сервером по протоколу tcp и отправить команду скриптом PHP?
Alex711 вне форума Ответить с цитированием
Старый 19.01.2019, 15:09   #2
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Alex711 Посмотреть сообщение
Подскажите как соединится с сервером по протоколу tcp и отправить команду скриптом PHP?

Код:
<?php
error_reporting(E_ALL);

echo "<h2>Соединение TCP/IP</h2>\n";

/* Получаем порт сервиса WWW. */
$service_port = getservbyname('www', 'tcp');

/* Получаем IP-адрес целевого хоста. */
$address = gethostbyname('www.example.com');

/* Создаём сокет TCP/IP. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "Не удалось выполнить socket_create(): причина: " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo "OK.\n";
}

echo "Пытаемся соединиться с '$address' на порту '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
    echo "Не удалось выполнить socket_connect().\nПричина: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo "OK.\n";
}

$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';

echo "Отправляем HTTP-запрос HEAD...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";

echo "Читаем ответ:\n\n";
while ($out = socket_read($socket, 2048)) {
    echo $out;
}

echo "Закрываем сокет...";
socket_close($socket);
echo "OK.\n\n";
?>
Как добавить сюда команду?
Alex711 вне форума Ответить с цитированием
Старый 19.01.2019, 17:13   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Что вы подразумеваете под командой?
p51x вне форума Ответить с цитированием
Старый 19.01.2019, 17:14   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

вот же
Цитата:
socket_write($socket, $in, strlen($in));
отправляете
ADSoft вне форума Ответить с цитированием
Старый 19.01.2019, 17:26   #5
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
вот же

отправляете
Надо после подключения к серверу отправить "10", подскажите куда 10 добавить?
Alex711 вне форума Ответить с цитированием
Старый 19.01.2019, 17:54   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
<?php
error_reporting(E_ALL);

echo "<h2>Соединение TCP/IP</h2>\n";

/* Получаем порт сервиса WWW. */
$service_port = getservbyname('www', 'tcp');

/* Получаем IP-адрес целевого хоста. */
$address = gethostbyname('www.example.com');

/* Создаём сокет TCP/IP. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "Не удалось выполнить socket_create(): причина: " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo "OK.\n";
}

echo "Пытаемся соединиться с '$address' на порту '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
    echo "Не удалось выполнить socket_connect().\nПричина: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo "OK.\n";
}

$in = "10";
$out = '';

echo "Отправляем HTTP-запрос HEAD...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";

echo "Читаем ответ:\n\n";
while ($out = socket_read($socket, 2048)) {
    echo $out;
}

echo "Закрываем сокет...";
socket_close($socket);
echo "OK.\n\n";
?>
p51x вне форума Ответить с цитированием
Старый 19.01.2019, 18:28   #7
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Всё отлично, только есть проблемка, скрипт получает IP урла и коннектится с IP-адресом, но на данном IP несколько урлов и надо подключится к определённому, только в этом случае команда пройдёт. Как быть?
Alex711 вне форума Ответить с цитированием
Старый 19.01.2019, 18:51   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Никак. У tcp нет урлов. Или вы о чем-то другом?

Последний раз редактировалось p51x; 19.01.2019 в 18:54.
p51x вне форума Ответить с цитированием
Старый 19.01.2019, 19:09   #9
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Да, может я не правильно ставлю вопрос, попробую подробнее:
Есть сервер к которому которому необходимо подключатся по TCP или UDP и отправлять команды вида "10", "11", "12". Это не обязательно должен быть PHP-скрипт, у хостинга есть варианты:
- Произвольная команда
- PHP-скрипт
- Запрос по протоколу HTTP
- Запрос по протоколу HTTPS
- Perl-скрипт
- Bash-скрипт
Почему охота реализовать это через хостинг, да потому, что удобно конечно отправлять команды с локальных машин через прогу написанную в Delphi, но локальные машины не всегда включены.
Во внешней сети IP серый, постоянно доступны только урлы. Каждый урл имеет отношение к определённому устройству в локалке.
Я могу написать прогу в Delphi и установить её на удалённый комп, так всё работает, но только нет постоянно включенного удалённого компа. Может есть какие-то решения для сервера хостинга?

Последний раз редактировалось Alex711; 19.01.2019 в 19:16.
Alex711 вне форума Ответить с цитированием
Старый 19.01.2019, 19:23   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Alex711 Посмотреть сообщение
Есть сервер к которому которому необходимо подключатся по TCP или UDP и отправлять команды вида "10", "11", "12". Это не обязательно должен быть PHP-скрипт
Это не зависит от скрипта. Для начала вам надо прочитать, что такое tcp/udp, что такое http и как это все работает. А потом сформулировать, что вам надо.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP АПИ сервер по протоколу TCP elianyyf PHP 2 15.06.2016 07:59
Создать браузер с окном отображающий динамику обмена между клиентом и сервером с момента установления соединения по протоколу TCP. aasavelev Работа с сетью в Delphi 0 22.02.2012 18:30
создание защищенного канала предачи данных по протоколу TCP и симметричного шифр satanclaus Помощь студентам 0 13.02.2012 23:11
Не получается создать удалённое сетевое подключение между двумя компами по протоколу TCP anyx Свободное общение 3 31.05.2011 20:55
Данные через сокет по tcp/ip протоколу a.haener JavaScript, Ajax 1 04.07.2009 08:14