第14章 網路程式設計
阿新 • • 發佈:2018-12-10
14.1 幾個網路模組
服務端:
import socket
s = socket.socket()
host = socket.gethostname()
port = 8090
s.bind((host,port))
s.listen(5)
while True:
c, addr = s.accept()
print('Got connection from',addr)
c.send(b'Thank you for connecting')
c.close()
客戶端:
import socket s = socket.socket() host = socket.gethostname() port = 8090 s.connect((host,port)) print(s.recv(1024))
14.1.2 模組urllib和urllib2
1 開啟遠端檔案
urlopen('http://www.baidu.com/')
- 獲取遠端副本
urlretrive('http://www.baidu.com/','c:\\baidu.html')
14.1.3 其他模組
14.2 SocketServer及相關的類
#基於SocketServer的及簡伺服器 from socketserver import TCPServer,StreamRequestHandler class Handler(StreamRequestHandler): def handle(self): addr = self.request.getpeername() print('Got connection from',addr) self.wfile.write('Thank you for connecting') server = TCPServer(('',1234),Handler) server.serve_forever()
14.3 多個連線 處理多個連線的三種方式:分叉(forking)、執行緒化和非同步I/O。 分叉是一個UNIX術語,對程序分叉就是複製一個程序。
14.3.1 使用SocketServer實現分叉和執行緒化
14.3.2 使用select和poll實現非同步I/O 框架 asyncore / asynchat 和Twisted採取的方法
14.4 Twisted 一個事件驅動的Python網路框架
14.5 小結
- 套接字和模組socket
- urllib和urllib2 :從各種伺服器讀取和下載資料
- 框架SocketServer:包含一系列同步伺服器基類,支援使用分叉、多執行緒
- select和poll : 非同步IO基礎函式,位於select模組
- Twisted : 自定義網路應用程式,最佳實踐