Я пытаюсь общаться с 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 и веб-сервером. Я подключаюсь с другой машины 192.168.0.7
Вы можете создать сокет только на том компьютере, на котором выполняется код.
Так что, если код PHP выполняется на 192.168.0.7, то выполните:
$socket = stream_socket_server("tcp://192.168.0.7:2500", $errno, $errstr);
Других решений пока нет …