繁体   English   中英

php(客户端套接字) java(服务器套接字)无法接收第二个数据

[英]php (client socket) java (server socket) cant receive second data

这是我连接 java 插座的代码:-

$socket         = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, '127.0.0.1', 12345);

while(true) 
{
    // read a line from the socket
    $line = socket_read($socket, 1024, PHP_NORMAL_READ);

    var_dump($line);

    $someArray  = json_decode($line, true);
    $otp         = $someArray["otp"];

    if($someArray["msg"] == "otp_generation")
    {           
        $myObj      = new \stdClass();          
        $myObj->msg = "OTP RECEIVED NEED TO CONNECT";       
        $send       = json_encode($myObj);

        socket_send($socket, $send, strlen($send), 0);
    }
    exit;       

}

我的问题是——

成功建立连接后,服务器向客户端发送一个 OTP 并在客户端成功接收。 然后我将数据发送到服务器 OTP RECEIVED 确认,它也在服务器中收到。 在 OTP RECEIVED 确认服务器向客户端发送欢迎消息后。 我无法收到欢迎信息。 如果我删除“退出”代码浏览器仍在加载,最后崩溃。 为什么我没有收到第二个数据。 任何人解决我的问题。 我需要修改什么。 我是套接字的初学者。

我需要显示欢迎消息。 我能做些什么?

您需要继续循环并阅读下一条消息,然后跳出循环。

while(true) 
{
    // read a line from the socket
    $line = socket_read($socket, 1024, PHP_NORMAL_READ);

    var_dump($line);

    $someArray  = json_decode($line, true);

    if($someArray["msg"] == "otp_generation")
    {           
        $otp         = $someArray["otp"];
        $myObj      = new \stdClass();          
        $myObj->msg = "OTP RECEIVED NEED TO CONNECT";       
        $send       = json_encode($myObj);

        socket_send($socket, $send, strlen($send), 0);
    } elseif ($someArray["msg"] == "welcome") {
        // do whatever you need to do with the rest of the message
        break; // then get out of the loop
    } else {
        echo "Unknown message received";
        var_dump($someArray);
        break;
    }
}

我不得不猜测欢迎消息的格式,但这应该会给你一个大致的想法。

没有新行 cmd 数据不发送。 这是我犯的错误。 最后我得到了朋友的答复。

我只是在下面添加一行;-

socket_send($socket, $send."\r\n", strlen($send."\r\n"), 0);

谢谢@hemanth kumar 和@Barmar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM