我正在尝试学习如何使用socket.makefile()函数,但我坚持从服务器获取第二个响应 这是我的测试代码
import socket
S = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
S.connect(('smtp.comcast.net',25))
file = S.makefile('rwb')
line = file.readlines()
print repr(line)
file.write("Ehlo User\r\n")
line = file.readlines()
print repr(line)
以下是我运行时收到的内容:
['220 omta06.emeryville.ca.mail.comcast.net comcast ESMTP server ready\r\n']
[]
我在这里做错了什么?我搜索了很多结果,似乎没有太多关于makefile()函数的文档。 任何帮助将不胜感激。
答案 0 :(得分:2)
对.readlines()
的第一次调用会读取所有行,并且在读取每行可用的行之前不会返回。再次调用.readlines()
时,不再需要读取行。也许你应该打电话给.readline()
。
哦,顺便说一下,不要在内置类型后命名变量。这不是无效的,但这是不好的做法。
试试这个:
import socket
S = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
S.connect(('smtp.comcast.net',25))
server = S.makefile('rwb')
line = server.readline()
print repr(line)
server.write("Ehlo User\r\n")
line = server.readline()
print repr(line)