Python-Socket empfängt unvollständige Nachricht vom Java PrintWriter-Socket

Ich habe eine Python-Warteschlange erstellt (ähnlich einem JMS-Protokoll), die Fragen von zwei Java-Clients empfängt. Der Python-Server empfängt die Nachricht von einem der Java-Clients und der zweite liest die Frage und sendet eine Antwort. Die Verbindung und das Messaging funktionieren, das Problem tritt auf, wenn ein Java-Client mit einer Zeichenfolge von großer Länge antwortet.

Die Antwort von Python ist unvollständig! Was noch schlimmer ist, die Nachricht wird mit einer bestimmten Anzahl von Zeichen und immer mit der gleichen Länge abgeschnitten. Diese Anzahl unterscheidet sich jedoch, wenn jemand anderes den Server hostet. (d. h .: Freund1 hostet den Server, Freund2 sendet eine Antwort, Länge empfangen: 1380 Zeichen. Freund2 hostet den Server, Freund1 sendet die Antwort, Länge empfangen: 1431 Zeichen.) Dies ist der serverseitige Python-Code:

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]

Ich habe hier auf StackOverflow die Fragen gelesen, dass c.recv () kein Problem mit einer großen Anzahl von Bytes haben sollte und unsere Antwort irgendwo in der Nähe von 1500 Zeichen liegt. Dies ist der Java-Client:

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();
}

Danke im Voraus

Antworten auf die Frage(2)

Ihre Antwort auf die Frage