0

我正在使用使用 Python 的 select 模块构建的简单脚本测试与套接字服务器的通信。它工作正常 - 我从服务器获得响应 - 除了我发送的任何请求似乎都在响应的第一行中回显(请参见下面的命令行示例)。服务器提供商说这不是他回应请求 - 发送请求时我没有做什么?(在某处冲洗一些缓冲区?)


选择客户端.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 回答