2012-04-08 7 views
1

Ich verwende Twisted Python zum Senden von Antworten an meine Client-App (iPhone App). die Antwort geht nicht an den Client, aber ich bin immer auf der Client-twisted self.transport.write() - Python - Angehängte Ausgabe

Dies ist der Ort, wo ich das Senden bin meinen Klienten ein hängten Ausgabestring Ende -

for name in clientname: 
       print "name in clientName array is"+name 
       self.sendClientName(name) 


def sendClientName(self , name): 
    self.transport.write(name) 
    print "client name sent to client app" 

am Client i Empfang immer bin die Zeichenfolge, die verkettet -

dh: wenn ich die folgenden in der client Array - Jack, Rocky i die folgende Zeichenfolge am Client

„JackRocky“ erhalten --- ich will die sparen Namen im Array Das ist also ein Problem.

Warum sendet der Server die Namen nicht nacheinander?

Antwort

0

mein Code im Server-Skript war falsch und nicht die entsprechende Nachricht an die Client-Anwendung zu senden, musste nur eine Schleife korrigieren jetzt funktioniert alles gut.

2

Bei TCP-Verbindungen gibt es keine Garantie, dass zwei Schreibvorgänge auf dem anderen Ende in zwei Lesevorgänge umgesetzt werden, da die Verbindung als ein fortlaufender Bytestrom betrachtet wird und Pufferung überall auftreten kann. Das bedeutet, dass Sie Ihr Array mit einer Art von Elementtrennzeichen senden sollten. Wenn Sie eine Bibliothek für die Serialisierung/Deserialisierung für ein gemeinsames Protokoll sowohl auf dem Client als auch auf dem Server haben, ist es normalerweise am einfachsten, dies zu verwenden. Ein beliebtes Beispiel ist JSON (Python hat ein JSON-Modul)