1

クライアントアプリ(iPhoneアプリ)に返信するためにTwisted pythonを使用しています。返信はクライアントに送られますが、クライアント側で出力文字列が追加されています

これは私がクライアントに送信する場所です -

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"

クライアント側で、連結された文字列を受け取っています -

つまり、clientname 配列に次の文字列がある場合 - Jack,Rocky クライアント エンドで次の文字列を受け取ります。

"JackRocky" --- 名前を配列に保存したいので、これは問題です。

サーバーが名前を 1 つずつ送信しないのはなぜですか?

4

2 に答える 2

2

TCP 接続では、2 つの書き込みが相手側で 2 つの読み取りに変換されるという保証はありません。これは、接続が 1 つの連続するバイト ストリームと見なされ、バッファリングがどこでも発生する可能性があるためです。これは、ある種の要素セパレーターを使用して配列を送信する必要があることを意味します。クライアントとサーバーの両方に共通のプロトコルのシリアライゼーション/デシリアライゼーション用のライブラリがある場合、通常はこれを使用するのが最も簡単です。一般的な例は JSON です (Python には json モジュールがあります)。

于 2012-04-09T10:06:44.007 に答える
0

サーバー スクリプトのコードが間違っていて、適切なメッセージをクライアント アプリケーションに送信していませんでした。1 つのループを修正するだけで、すべて正常に動作するようになりました。

于 2012-06-09T09:18:59.863 に答える