Java Socket не может передавать данные по сети
У меня странная проблема с сокетами между клиентским комплектом Java Knopflerfish и сервером PHP (CLI, а не web).
Пара клиент / сервер работает нормально, когда оба находятся на локальном хосте, и все данные передаются успешно. Однако, когда Java-клиент существует на другом компьютере, соединения с сервером успешны, но PHP-скрипт не получает никаких данных. Анализ пакетов подтверждает, что данные, отправленные клиентом Java, принимаются сервером - PHP, похоже, просто не может его достать.
В качестве дальнейшего примечания я провел несколько тестов с telnet в качестве клиента. Сценарий PHP-сервера получает все данные с любого хоста. Это наводит меня на мысль, что проблема связана с тем, как java настраивает сокет, или с сетевыми проблемами, с которыми я не знаком. Любые мысли будут оценены. При желании можете выложить образцы кода.
2 ответа
Вы, вероятно, забыли очистить буферы на стороне клиента. telnet выполняет сброс для каждой строки, поэтому это объясняет, почему это работает.
Оказывается, это было состояние гонки. Если я сплю в течение нескольких миллисекунд после получения соединения и перед выполнением socket_read, это прекрасно сработает.