2010-04-20 2 views
0

Я испытываю странную проблему с сокетами между клиентским пакетом Java Knopflerfish и сервером PHP (CLI, а не веб-сервером).Java Socket не передает данные по сети

Пара клиент/сервер работает нормально, когда оба находятся на локальном хосте, и все данные передаются успешно. Однако, когда клиент Java существует на другой машине, соединения с сервером успешны, но никакие данные не получены скриптом PHP. Пакетный анализ подтверждает, что данные, отправленные клиентом Java, принимаются сервером - у PHP, похоже, есть проблемы с его использованием.

В качестве дополнительного примечания, я провел несколько тестов с telnet в качестве клиента. Скрипт сервера PHP получает все данные с любого хоста. Это заставляет меня думать, что проблема связана с тем, как java настраивает сокет или что есть какая-то сетевая проблема, с которой я не знаком. Любые мысли были бы оценены. При необходимости можете отправлять образцы кода.

+0

У вашего скрипта PHP есть ошибка/он не соответствует протоколу Java-приложения (протокол applcation, а не «TCP»). Поэтому отправьте некоторый PHP-код. – nos

ответ

0

Возможно, вы забыли сбросить буферы на стороне клиента. telnet делает флеш для каждой строки, чтобы объяснить, почему он работает.

+0

Я подозревал, что это тоже может быть проблемой, но подтверждено, и я уже делаю флеш на клиенте. –

+0

Кроме того, если бы я не смывал, я не думал, что получаю пакеты на сервере (правильно?) - я могу видеть их в wirehark. –

0

Оказывается, это было состояние гонки. Если я сплю в течение нескольких миллисекунд после получения соединения и перед выполнением socket_read, он прекрасно выполняет трюк.

Смежные вопросы