PHP 和 Java 之间通过套接字的通信失败



我遇到了一个问题,我希望你们知道我哪里出错了。

我正在尝试通过PHP向正在运行的JAVA程序发送和接收信息。

该程序是敲门服务器。

im使用的PHP代码是这样的:

$host='127.0.0.1';
$port=4444;
$socket=socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not 
create socket n");
$result=socket_bind($socket, $host, $port) or die("Could not bind to 
 socketn");

$result=socket_listen($socket, 3) or die('Could not set up socket 
listenern');
$spawn=socket_accept($socket) or die('Could not accept incoming 
connection');
$input=socket_read($result, 1024) or die('Could not read input');
socket_close($spawn);
socket_close($socket);

我只是从网上抢来的。

理想情况下,交互是我连接到端口4444,然后Java服务器响应knock knock!

我遇到的问题是,如果我先运行 Java 服务器,PHP 脚本将无法绑定套接字(我猜,因为它已经在使用中(。

有时socket_accept只会让我的浏览器卡住,所以我必须完全重新启动它才能让它再次工作。

真正想做的是学习如何通过端口进行通信,我一直在尝试阅读,但我只是不明白为什么我不能通过已经打开的端口连接和接受通信。

您引用的 PHP 代码也适用于服务器。TCP 连接具有服务器端和客户端。你不能神奇地让服务器互相"交谈"。

您正在使用 socket_bind ,一个 PHP 函数将服务器套接字绑定到本地端口并开始等待传入连接。您希望改用socket_connect($socket, $address, $service_port)将客户端套接字连接到另一个已经在运行的服务器(在本例中为 Java 服务器(。

最新更新