С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 5

Принять tcp пакет извне на php

15.01.2018, 17:41. Показов 2384. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ситуация такая:

Есть код, создающий сокет и слушающий его (ниже локальный ip адрес), полученные данные записываются в текстовый файл:

PHP/HTML
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
<?php
while (true)
{
      set_time_limit(0); 
// disconnected every 5 seconds...
receive_message('172.16.4.35','7535',100);
}
 
function receive_message($ipServer,$portNumber,$nbSecondsIdle)
{
  // creating the socket...
  $socket = stream_socket_server('tcp://'.$ipServer.':'.$portNumber, $errno, $errstr);
  if (!$socket)
  {
    echo "$errstr ($errno)<br />\n";
  }
  else
   {
    // while there is connection, i'll receive it... if I didn't receive a message within $nbSecondsIdle seconds, the following function will stop.
    while ($conn = @stream_socket_accept($socket,$nbSecondsIdle))
    {
     $message= fread($conn, 1024);
     echo 'I have received that : '.$message;
     fputs ($conn, "OK\n");
     fclose ($conn);
     
     
     
     $file = 'test.txt';
// Открываем файл для получения существующего содержимого
$current = file_get_contents($file);
// Добавляем новое содержимое в файл
$current .= $message;
// Пишем содержимое обратно в файл
file_put_contents($file, $current);
 
 
 
    }
    fclose($socket);
  }
}
 
?>
Код отправки данных:

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 <?php
 
send_message('172.16.4.35','7535','test');
 
function send_message($ipServer,$portServer,$message)
{
  $fp = stream_socket_client("tcp://$ipServer:$portServer", $errno, $errstr);
  if (!$fp)
  {
     echo "ERREUR : $errno - $errstr<br />\n";
  }
  else
  {
     fwrite($fp,"$message\n");
     $response =  fread($fp, 4);
     if ($response != "OK\n")
        {echo 'The command couldn\'t be executed...\ncause :'.$response;}
     else
        {echo 'Запрос отправлен...';}
     fclose($fp);
  }
}
?>
Проблема в том, что работает это только локально, только теми компьютерами, что в локальной сети. Когда пытаюсь отправить что-то из вне локальной группы, ничего не выходит. Точнее даже так: меняю в коде выше 172.16.4.35:7535 (локальный адрес компа) на 46.228.4.171:7535 (адрес через который я захожу на apahe этого компа) либо [46.228.4.171]:7535 (прочел на одном из форумов, что это должно помочь), ничего не выходит, выдает ошибки:
Warning: stream_socket_server(): unable to connect to tcp://[46.228.4.171]:7535
Warning: stream_socket_server(): unable to connect to tcp://46.228.4.171:7535

Помогите пожалуйста разобраться.

П.С. это виртуальная машина на сервере.
http://46.228.4.171:7535/open_socket.php - ссылка на файл с открытием и слушанием сокета
http://46.228.4.171:7535/send_socket.php - ссылка на файл отправки пакета
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.01.2018, 17:41
Ответы с готовыми решениями:

AJAX не принимает текст от PHP
Здрасте. На своей страничке index.html есть код JS который отправляет данный POST-методом и должен получить ответ в виде текста: ...

Как принять значение переменной, посланной Делфи на сервак, в php-файлу?
Доброго времени суток!)) Вот посмотрите. Запускаю прогу на Делфи. Вот некоторый пример кода var PostData:TStringList; ...

Принцип взаимосвязи Oracle + PHP
Собственно сабж, а точнее взаимодействие.... я просто никогда не работал с Oracle БД и шас не знаю как, точнее что устанавливать. ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2018, 17:41
Помогаю со студенческими работами здесь

PHP 5.4: mysqli_stmt::bind_param() принимает только переменные
Собственно. Какого черта... Вот это - правильно: $aaa = $mysqli-&gt;real_escape_string($_POST); $bbb =...

Принцип постинга php
Здравствуйте. Сейчас занимаюсь разработкой сайта (стадия дизайна и верстки) проект сильно захватил, но нет знания php. и вот появился...

Принцип php
вроде не мало времени потратила на изучения php но как делать динамические сайты так и не поняла например есть меню главная и статьи...

Упрощенный принцип создания поисковой системы на PHP
- Доброго времени суток. Сперва объясню ситуацию: выбрал тему на курсовой проект &quot;Поисковая система&quot;. Только сначала совсем не...

Smarty. Принимать $_POST[] в {php}{/php}
Здравствуйте форумчане! Подскажите пожалуйста как принимаются $_POST в Smarty. Допустим нужно принять инфо с той же стр. где содержится...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru