Отправка TCP-сообщения с использованием PHP - PullRequest
0 голосов
/ 28 мая 2020

У меня есть приложение, которое прослушивает порт для сообщений TCP, и мне нужно написать сценарий PHP, который может их отправлять.

Это то, что я использую для отправки сообщения TCP, но я не знаю, что происходит не так, и я продолжаю получать ошибку 500. Я использую Laravel.

public function tcp_msg(Request $request){

 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

    if ($socket === false) {
        $m1 = "Socket no creado";
        return $m1;
    }

    $msg = $request->Mensaje;
    $len = strlen($msg);

    $msg_error = 'Conexion no establecida';

    $conexion = socket_connect($socket, '127.0.0.1', 8688);

    if ($conexion === false) {
        $m2 = "No conectado";
        return $m2;
    }

    $resultado = socket_sendto($socket, $msg, $len, 0, '127.0.0.1', 8688);

    if($resultado){
        socket_close($socket);
        return $msg;
    }

    return $msg;

}

1 Ответ

0 голосов
/ 28 мая 2020

Это выглядит вполне нормально - обычно вам просто нужны socket_create () и socket_sendto (), чтобы отправить правильное сообщение.

Вы можете удалить часть с помощью:

$msg_error = 'Conexion no establecida';

$conexion = socket_connect($socket, '127.0.0.1', 8688);

if ($conexion === false) {
    $m2 = "No conectado";
    return $m2;
}

Ссылаясь на https://www.php.net/manual/en/function.socket-sendto.php

<?php
    $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)

    $msg = "Ping !";
    $len = strlen($msg);

    socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 1223);
    socket_close($sock);
?>

Возможно, вам придется проверить, работает ли прослушиватель порта 8688 ... socket_sendto () возвращает количество байтов, отправленных на удаленный хост, или FALSE если произошла ошибка.

...