Java Socket не может передавать данные по сети - PullRequest
0 голосов
/ 20 апреля 2010

У меня странная проблема с сокетами между клиентским комплектом Java Knopflerfish и сервером PHP (CLI, а не web).

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

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

Ответы [ 2 ]

0 голосов
/ 20 апреля 2010

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

0 голосов
/ 20 апреля 2010

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

...