套接字makefile()第二次调用时没有响应

时间:2014-02-05 17:00:02

标签: python sockets networking

我正在尝试学习如何使用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()函数的文档。 任何帮助将不胜感激。

1 个答案:

答案 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)