Soquete Python recebe mensagem incompleta do soquete Java PrintWriter
Fiz uma "fila" python (semelhante a um protocolo JMS) que receberá perguntas de dois clientes Java. O servidor python receberá a mensagem de um dos clientes Java e o segundo lerá a pergunta e publicará uma resposta. A conexão e o sistema de mensagens funcionam, o problema surge quando um cliente Java responde com uma String de grande comprimento.
A resposta recebida pelo python está incompleta! O que é pior, a mensagem é cortada em um determinado número de caracteres e sempre no mesmo comprimento, mas esse número é diferente se outra pessoa hospedar o servidor. (ou seja: friend1 hospeda o servidor, friend2 envia resposta, comprimento recebido: 1380chars. Friend2 hospeda o servidor, friend1 publica a resposta, comprimento recebido: 1431chars) Esse é o código python do servidor:
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]
Li perguntas aqui no StackOverflow, que c.recv () não deve ter problema com um grande número de bytes e nossa resposta é algo em torno de 1500 caracteres. Este é o cliente 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();
}
Desde já, obrigado!