我有一个可用的 Java 套接字,但我需要一些帮助来使用 PHP 连接它。
我的问题:我可以从 Java 客户端连接到 Java 套接字并发送/接收消息,但是当我尝试使用 PHP 连接到同一个套接字时,它无法连接。
这就是我在 while 循环中的套接字:(请记住这部分有效)
Socket socket = serverSocket.accept();
System.out.println("Got connection");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
String cmd = in.readLine();
System.out.println("Received: " + cmd);
String response = "It worked. Received: " + cmd;
out.println(response);
...
只是为了展示另一半有效,这是客户端:
Socket socket = new Socket("<ip>", port);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.println("test msg");
out.flush();
System.out.println("Sent message");
String r = in.readLine();
System.out.println("Response: " + r);
现在对于不起作用的部分。
这就是我尝试连接 PHP 所做的事情:
$s = fsockopen('<ip>', $port, $errno, $errstr, 25);
if (!$s) {
echo 'Error: '.$errstr;
die;
}
运行该输出:“错误:连接被拒绝”
有谁知道我如何诊断为什么 PHP 无法连接但 Java 客户端可以?它们都在外部访问套接字,并且由于 Java 客户端可以连接,因此它不会被阻塞。有没有我忘记设置的协议?
我看过其他几十个有同样问题的人,但没有人提供答案。