【问题标题】:Sending a TCP message using PHP使用 PHP 发送 TCP 消息
【发布时间】:2020-09-15 22:18:31
【问题描述】:

我有一个应用程序正在侦听 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;

}

【问题讨论】:

  • 是否启用了套接字扩展?检查get_loaded_extensions()

标签: php laravel sockets tcp


【解决方案1】:

这看起来很不错 - 通常你只需要 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。

【讨论】:

    猜你喜欢
    • 2016-05-12
    • 2021-10-04
    • 2014-08-02
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2012-10-09
    相关资源
    最近更新 更多