我正在尝试使用套接字从 php 到 java 进行通信。我有以下java代码:
private static ServerSocket socket;
private static Socket connection;
private static String command = new String();
private static String responseStr = new String();
private static int port = 2500;
public static void main(String args[]) {
System.out.println("Server is running.");
try {
socket = new ServerSocket(port);
while (true) {
connection = socket.accept();
InputStreamReader inputStream = new InputStreamReader(connection.getInputStream());
DataOutputStream response = new DataOutputStream(connection.getOutputStream());
BufferedReader input = new BufferedReader(inputStream);
command = input.readLine();
response.writeBytes(responseStr);
response.flush();
}
} catch (IOException e) {
System.out.println("Fail!: " + e.toString());
}
}
我有以下 PHP 代码:
<?php
$socket = stream_socket_server("tcp://192.168.0.10:2500", $errno, $errstr);
if (!$socket) {
echo "$errstr ($errno)<br />\n";
} else {
while ($conn = stream_socket_accept($socket)) {
fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n");
fclose($conn);
}
fclose($socket);
}
我启动了 java 应用程序,它启动正常,当我运行 php 时,出现以下错误:
An attempt was made to access a socket in a way forbidden by its access permissions. (0)
我已经在 Google 上搜索并尝试了所有能找到的解决方案,但没有任何效果。我已经重新启动了两台机器并禁用了防火墙,但都不起作用。
我不知道从这里该去哪里。
<小时/>[评论更新:]
192.168.0.10 是装有 java 应用程序和 Web 服务器的计算机。我从另一台机器192.168.0.7连接
最佳答案
您只能在运行代码的机器上创建套接字。
因此,如果 PHP 代码在 192.168.0.7 上运行,则执行以下操作:
$socket = stream_socket_server("tcp://192.168.0.7:2500", $errno, $errstr);
关于java - PHP 到 Java - 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25961796/