makefile函数

python的文件类对象可以直接读写等操作,那么使用socket编写服务时,是否可以将socket对象当成文本对象直接进行读写能?答案是肯定的,可以使用makefile函数,生产文件类对象。

makefile函数:

返回一个socket关联的文件类对象,makefile有两个参数:一个为文件类的模式,另一个为缓存的模式;文件类的模式包含只读,只写和既读又写;缓存主要用在磁盘文件,但是对于交互式的网络程序,它可以阻碍程序的运行,建议关闭(0)。

实例:

#!/usr/bin/env python
#coding:utf-8
#fileName: makefile demo

import socket
import sys

port = 70
host = sys.argv[1]
filename = sys.argv[2]

s = socket.socket(socket.AF_INET , socket.SOCK_STREAM)
fd = s.makefile('rw',0)
fd.write(filename +'\r\n')
for line in fd.readlines():
    sys.stdout.write(line)