Отправить байтовый массив из PHP в Java Socket - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть java-сервер, слушающий Socket. Я могу отправлять и получать данные между этим сокетом java-сервера и подключенным к нему сокетом java-клиента.

Теперь я хочу подключить PHP к серверу Java (через сокет Java), но не могу отправить байтовый массив (используя pack () ) в Java.

$socket = fsockopen("127.0.0.1", 5477) or die("Error creating socket");

$output = pack("i3", 2, 1, 1); 
fwrite($socket, $output, 3);

В конце java я получаю исключение java.io.EOFException при попытке вызвать in.readInt() (где in - это DataInputStream)

if (in.available() != 0)
{
    //read the data
    int len = in.readInt(); //length of the buffer
}

Так в чем же проблема? / Правильно ли я это делаю или есть лучший способ сделать это?

1 Ответ

1 голос
/ 15 ноября 2011

Вы записываете всего 3 байта в сокет, но readInt() ВСЕГДА читает 4 байта для создания значения java int.

Итак, вы, естественно, получаете EOFException после 3-го байта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...