Сокет Python получает неполное сообщение от сокета Java PrintWriter
Я создал «очередь» Python (похожую на протокол JMS), которая будет получать вопросы от двух клиентов Java. Python-сервер получит сообщение от одного из клиентов Java, а второй прочитает вопрос и отправит ответ. Соединение и обмен сообщениями работают, проблема возникает, когда клиент Java отвечает строкой большой длины.
Ответ, полученный Python, является неполным! Что еще хуже, сообщение вырезается с определенным количеством символов и всегда одинаковой длины, но это число отличается, если кто-то другой размещает сервер. (то есть: friend1 размещает сервер, friend2 отправляет ответ, длина получена: 1380 символов. Friend2 размещает сервер, friend1 отправляет ответ, длина получается: 1431 символ) Это код Python на стороне сервера:
s = socket.socket()
host = socket.gethostname()
# host = "192.168.0.20"
port = 12345
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
# print 'Got connection from', addr
message = c.recv(8192) #Is this length a problem?
# print message
message = message.strip()
ipAddress = addr[0]
Здесь я читаю вопросы о StackOverflow: у c.recv () не должно быть проблем с большим количеством байтов, а наш ответ где-то близко к 1500 символам. Это Java-клиент:
private void openConnection(){
try {
socket = new Socket(HOST, PORT);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
socketPregunta.getInputStream()));
stdIn = new BufferedReader(new InputStreamReader(System.in));
} catch (Exception e) {}
}
public void sendAnswer(String answer) throws IOException{
openConnection();
out.write("PUBLISH-" + answer); //This answer is send incomplete!
out.flush();
closeConnection();
}
Заранее спасибо!