插座。 (mode =’r’,buffering = None,*,encoding = None,errors = None,newline = None)
返回与套接字关联的 文件对象 。返回的确切类型取决于赋予makefile()的参数。这些参数的解释方式与内置的open()函数相同。
除非没有剩余的套接字引用,否则关闭文件对象不会关闭套接字。套接字必须处于阻止模式;它可能会有超时,但是如果发生超时,文件对象的内部缓冲区可能会以不一致的状态结束。
您可以在Mark Lutz的书中阅读如何使用它(使套接字看起来像文件和流一章)
书中的示例(想法很简单:使用socket创建文件对象并与其socket.makefile
链接sys.stdout
):
def redirectOut(port=port, host=host):
"""
connect caller's standard output stream to a socket for GUI to listen
start caller after listener started, else connect fails before accept
"""
sock = socket(AF_INET, SOCK_STREAM)
sock.connect((host, port)) # caller operates in client mode
file = sock.makefile('w') # file interface: text, buffered
sys.stdout = file # make prints go to sock.send
return sock # if caller needs to access it raw