监听TCP并接收数据

时间:2018-02-26 13:39:04

标签: php sockets hl7

我有一台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);

1 个答案:

答案 0 :(得分: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