Слушай TCP и получай данные

У меня есть машина HL7, которая отправляет данные через TCP на указанный порт. Я хочу постоянно слушать этот порт и отображать любые данные, полученные на экране.

У меня есть это, которое создает соединение, но в моем сценарии соединение создается машиной HL7, которая затем начинает отправку.

// host and port to connect to
$host = "localhost";
$port = 9876;
// connect to the port
$fp = fsockopen($host, $port, $errno, $errstr);set_time_limit(0);

// if connection not successfull, display error
if (!$fp)
{
die("Error: Could not open socket for connection!");
}
else
{
// connection successfull, listen for data (1024 bytes by default)
$got = fgets($fp);

// display the data
echo $got;
}

fclose($fp);

0

Решение

Вам следует подождать (заблокировать) сокетное соединение от машины HL7. Когда соединение получено, вы должны обработать данные, а затем ждать другого соединения.

Если установлено несколько соединений одновременно, и обработка сообщения HL7 занимает немного времени, может быть целесообразно обработать сообщение / данные из сокета в новом потоке.

<?php
$condition = true;
$socket = socket_create_listen(port);
socket_set_block($socket);
while (condition) {
socket_accept($socket);

// read data from socket
// condition to break from listening
}

?>

Ссылка: http://php.net/manual/en/function.socket-set-block.php

0

Другие решения

Других решений пока нет …