Я пытаюсь общаться между PHP и Java Unsing сокетов. Оба работают на одной машине. Отправка данных из php в java работает довольно хорошо. Но наоборот нет.
Я перепробовал множество других примеров, поэтому даже не уверен, что проблема возникает из-за кода или каких-либо других мыслей, происходящих вокруг.
Очень простой пример, который я использую сейчас:
Java (отправитель):
public static void testSend() throws UnknownHostException, IOException{
Socket socket = null;
OutputStreamWriter osw;
String str = "Hello World\n";
socket = new Socket("localhost", 4308);
osw = new OutputStreamWriter(socket.getOutputStream(), "UTF-8");
osw.write(str, 0, str.length());
osw.flush();
socket.close();
}
Я не уверен, нужен ли osw.flush () (я пробовал с и без).
php (получатель):
<?php
echo "start\n";
$address = 'localhost';
$port = 4308;
$mysock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($mysock,$address, $port) or die('Could not bind to address');
socket_listen($mysock, 5);
$client = socket_accept($mysock);
// read 1024 bytes from client
$input = socket_read($client, 1024, PHP_NORMAL_READ);
var_dump($inpit);
socket_close($client);
socket_close($mysock);
echo "end";
?>
Ответ из кода php:
start NULL end
Когда я наблюдаю за портом в TCPView, я вижу, что скрипт php прослушивает этот порт, когда я затем запускаю java-программу, она перестает слушать и возвращает NULL. Это означает, что скрипт php заметил соединение, но не получил строку «Hello World \ n».
Задача ещё не решена.
Других решений пока нет …