我有一个可用的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客户端可以连接它,因此它不会被阻止。有没有我忘记设置的协议?
我看过几十个有同样问题的人,但没有人提供答案。
答案 0 :(得分:0)
如果允许使用fsockopen,你有没有看过php.ini?
1,php.ini,查找行:disable_functions = fsockopen 2,php.ini,参见allow_url_fopen = On或allow_url_fopen = Off