[英]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.