Recommand · June 4, 2021 0

PHP TCP/IP full duplex client

My task is to write a full duplex TCP/IP client using PHP. The client connects to a server and sends a heartbeat packet using a predefined interval. This is OK and I know how to handle it. The server can send a data packet time to time. This is my problem – I don’t know to "listen" for the incoming data and send an answer in parallel with the heartbeat function. This is my simplified code:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $address, $port);

$lastHeartBeat = 0;

do {
   if(time() - $lastHeartBeat >= 60) {
       $binarydata = pack("c*", 1, 5, 0, 0, 0, 0, 0, 0 );

       socket_write($socket, $binarydata, strlen($binarydata));

       $resp = socket_read($socket, 2048);

       $lastHeartBeat = time();
   }
} while (true);