У меня проблема с Java ServerSocket и Python, где у меня многопоточный эхо-сервер (написанный на Java), который может связываться с несколькими java-клиентами. Все это прекрасно работает.Проблемы сокета на языке Python
Когда я пытаюсь подключиться к клиенту python, клиент python может получать данные с сервера, но когда он отправляет данные, сервер, похоже, никогда не получит его.
Я могу видеть только данные на сервере, когда я пытаюсь отправить 500K + байты. Пока я могу видеть данные, они неполны и не синхронизированы.
Я тестировал follwing пример кода, и она отлично работает с питоном: http://norwied.wordpress.com/2012/04/17/how-to-connect-a-python-client-to-java-server-with-tcp-sockets/
Единственное реальное отличие состоит в том, что в коде из ссылки он использует:
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream(),
Где, как и в моем сервере Я использую:
streamOut = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));
streamIn = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
Может ли это быть причиной?
Да, похоже, эта проблема, но в данный момент я не нашел способ сбросить буфер в python. Кажется, он полагается на EOL для отправки. Есть ли альтернативный способ сделать его flush? – DevilCode
Есть ли способ flush()? – kutschkem
, к сожалению, нет. Мы перекодировали в java, все хорошо сейчас =) – DevilCode