目前,我正在尝试开发一个 PHP 脚本,用作客户端/服务器应用程序的公开可用部分。php 脚本应该用于使用一次性令牌对用户进行身份验证。
该应用程序的另一部分是一个 java 程序,它提供一个 telnet 套接字供其他应用程序连接。身份验证是通过此 telnet 连接完成的。
java 部分已经在工作了——但我仍然对 PHP 部分有很大的问题。
在 php 中,我已经打开了到 java 程序的 telnet 端口的连接,该连接到目前为止有效。初始化连接后,java 程序等待来自 PHP 脚本的输入,以便对用户进行身份验证。
身份验证过程完成后,它会向 PHP 脚本(或连接到其 telnet 服务器的任何其他程序)返回一个字符串,PHP 脚本应该输出该字符串。
在我解释我的问题之前,这是发生实际通信的 PHP 脚本的一部分:
$tnconn = fsockopen("localhost", 53135, $errno, $errstr, 2);
if(!$tnconn) {
echo "SERVER_UNAVAILABLE";
die();
} else {
$data = $p_ip." ".$p_name." ".$p_token;
fputs($tnconn, $data);
while (true) {
if(($telnet_response = fgets($tnconn)) == false) {
break;
}
}
}
echo $telnet_response;
似乎该fputs()
语句是在循环之后执行的,即使它应该在它开始之前发生 - 否则 java 应用程序无法获取传递给 php 脚本的数据,但它需要对用户进行身份验证。
收到数据后,telnet 服务器会立即输出 String 以指示身份验证是否成功。
我尝试暂时删除循环并且数据已成功传递,fputs()
所以我假设 php 等到整个脚本完成然后执行该函数。
我怎样才能让它在循环之前发送数据?
先感谢您。