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

时间:2018-01-19 13:22:32

标签: java php sockets port

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

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

该计划是knockknockserver

我正在使用的PHP代码是:

insert into Student(Studentno,studentFName,StudentLName,Gender, DateOfBirth,YearEnrolled,YearGraduated) Values (123,'JungKook','Jeon','M','1September1997',2015,2018); 

我刚从网上抓起来。

理想情况下,交互将是我连接到端口$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 socket\n"); $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); ,然后Java服务器响应4444

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

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

我真正想做的是学习如何通过端口进行通信,我一直在努力阅读,但我不明白为什么我无法通过已经连接和接受通信开放港口。

1 个答案:

答案 0 :(得分:1)

您引用的PHP代码对于服务器来说也是 。 TCP连接具有服务器端和客户端。你无法神奇地与服务员进行“谈话”。

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