1

我有一个可用的 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 客户端可以连接,因此它不会被阻塞。有没有我忘记设置的协议?

我看过其他几十个有同样问题的人,但没有人提供答案。

4

1 回答 1

0

如果允许 fsockopen,您是否查看了 php.ini?

1、php.ini,查找行:disable_functions = fsockopen 2、php.ini,查看allow_url_fopen = On 或allow_url_fopen = Off

于 2016-07-08T07:19:21.843 回答