我有一台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 :(得分: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
}
?>