【发布时间】:2020-04-03 21:15:46
【问题描述】:
这是我连接 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 确认后,服务器向客户端发送欢迎消息。我无法收到欢迎信息。如果我删除“退出”代码浏览器仍在加载,最后崩溃。为什么我没有收到第二个数据。任何人解决我的问题。我需要修改什么。我是套接字的初学者。
我需要显示欢迎消息。我能做些什么?
【问题讨论】:
-
当您删除
exit时,您将进入一个无限循环,因为它不会检查是否有条件爆发。 -
服务器发送欢迎信息后是否关闭连接?当服务器关闭连接时,
$line将是FALSE,你应该检查一下。 -
@Barmar 服务器没有关闭连接。它将在 3 分钟后关闭。
-
@Barmar 如果我删除出口,它将无限,但我无法跟踪来自服务器的任何数据。如果我把存在第一个响应将显示。你能告诉我我能做什么。你有任何例子
标签: php