0

Pythonのselectモジュールで構築された単純なスクリプトを使用して、ソケットサーバーとの通信をテストしています。正常に動作します-サーバーから応答を受け取ります-送信した要求が応答の最初の行にエコーされているように見えることを除いて(以下のコマンドラインの例を参照)。サーバープロバイダーは、これはリクエストをエコーし​​ているのではないと言っています-リクエストを送信するときに何をしなかったのですか?(どこかでバッファをフラッシュしますか?)


select_client.py

Prompt=">>>"

def loop(chan, bufsize):
    while True:
        r, w, e = select.select([chan, sys.stdin], [], [])
        if chan in r:
            data=chan.recv(bufsize)
            if len(data)==0:
                continue
            sys.stdout.write(data)
            sys.stdout.write("%s " % Prompt)
            sys.stdout.flush()
        if sys.stdin in r:
            data=sys.stdin.readline()
            if data=="\n":
                break
            chan.send(data)

使用例

>>> hello
hello <--------- ECHO!
error:no_version_specified
>>> login:1
login:1 <---------- ...!
error:usage:login:1:username?:passwd?
>>> login:1:foo:bar
login:1:foo:bar
>>> error:incorrect_username_or_password
>>> 
4

1 に答える 1

0

これは完全に正常に思えます。これは、送信した文字列に問題がないことを確認する一種の確認です (エコーがないと言われていても)。あなたの場合、data変数の最初の行を削除することをお勧めします。

于 2013-01-30T16:35:04.947 に答える