<?php
namespace App\Services;

class TcpSocketClient
{
    protected $ip;
    protected $port;
    protected $timeout;

    public function __construct(string $ip, int $port, int $timeout = 5)
    {
        $this->ip = $ip;
        $this->port = $port;
        $this->timeout = $timeout;
    }

    public function send(string $data): string
    {
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        if ($socket === false) {
            throw new \Exception("Socket create failed: " . socket_strerror(socket_last_error()));
        }

        $result = socket_connect($socket, $this->ip, $this->port);
        if ($result === false) {
            throw new \Exception("Socket connect failed: " . socket_strerror(socket_last_error($socket)));
        }

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

        $response = '';
        while ($out = socket_read($socket, 2048)) {
            $response .= $out;
            // 根據協議判斷是否結束接收，可以自行調整
            if (strpos($response, "\n") !== false) {
                break;
            }
        }

        socket_close($socket);
        return $response;
    }
}