我遇到了一个问题,我希望你们知道我哪里出错了。
我正在尝试通过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 服务器(。