python基础学习笔记——Python基础教程(第2版 修订版)第14章(网络编程)
#socket模块
#套接字 “信息通道” #服务器套接字 客户端套接字 #实例化三个参数 地址族(默认socket.AF_INET) 流(socket.SOCK_STREAM) 协议(0) #服务器端使用bind 再调用listen监听地址 #客户端connect #aa套接字 send recy #服务器 import socket s=socket.socket() host=socket.gethostname() port=1234 s.bind((host,port)) s.listen(5) while True: c.addr=s.accept() print("Got connection from ",addr) c.send("thank you for connecting") c.close() #客户机 import socket s=socket.socket() host=socket.gethostname() port=1234 s.connect((host,port)) print s.recv(1234)
#urllib和urllib2模块 通过网络访问文件
#打开远程文件 from urllib import urlopen web=urlopen("http://www.python.org") #提取python页中(“About”连接URL,使用正则 import re text=webpage.read() m=re.search('<a href="([^"]+)".*?>about</a>'.text.re.IGNORECASE) m.group(1) #获取远程文件 urlretrieve("http://www.python.org","c:\\python_webpage.html")
#SocketServer和他的朋友们
#服务器框架的基础 BaseHTTPServer SimpleHTTPServer CGIHTTPServer SimpleXMLRPCServer DocXMLRPCServer #实例 from SocketServer import TCPServer,StreamRequestHandler class Handler(StreamRequestHandler) def handle(self): addr=self.request.getpeername() print ("Got connection from addr self.wfile.write("than you ") server=TCOServer(("",1234)Handler) server.serve_forver()
#多连接
#分叉(Windows不支持) 线程 异步 #线程处理服务器 from SocketServer import TCPServer,ThreadingMixIN,StreamRequestHandler class Server(ThreadingMixIn.TCPServer):pass class Handler(StreamRequestHandler) def handle(self): addr=self.request.getpeername() print ("Got connection from addr self.wfile.write("than you ") server=TCOServer(("",1234)Handler) server.serve_forver()
#d带有select和poll的一部I/O pollwindows不可u用 #select 需要三个序列为必选参数 秒为单位超时间做第四个可选参数 #输入输出异常情况 没有给定超市时间 会阻塞(等待状态) importsocket,select s=socket.socket() host=socket.gethostname() port1234 s.bind((host,port)) s.listen(5) input[s] while True: rs,ws es=select.select(inputs,[],[]) for f in rs: if r is s: c.addr=s.accept() print("Got connection from",addr) inputs.append(c) else: try: data=r.recv(1024) disconnected=not data except socket.error: disconnected=True if dissconnected: print r.getpeername()."disconnected" inputs.reme(r) else: print data
#Twised
python setup.pyinstall