我正在使用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
>>>
答案 0 :(得分:0)
这似乎很正常。这是一种确认,你发送的字符串是可以的(即使你被告知没有回声)。在您的情况下,我建议您删除data
变量的第一行。