----用教授的方式学习
目录
14.3.1 使用 SocketServer 实现分叉和线程化
14.3.2 使用 select 和 poll 实现异步 I/O
14.1 几个网络模块
14.1.1 模块 socket
网络编程中的一个基本组件是套接字(socket)。套接字基本上是一个信息通道,两端各有一个程序。
套接字分为两类:服务器套接字和客户端套接字。创建服务器套接字后,让它等待连接请求的到来。
使用举例:
最简单的服务器
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(1024))
14.1.2 模块 urllib 和 urllib2
1. 打开远程文件
几乎可以像打开本地文件一样打开远程文件,差别是只能使用读取模式,以及使用模块urllib.request中的函数urlopen,而不是open(或file)。
>>> from urllib.request import urlopen >>> webpage = urlopen('http://www.python.org') |
2. 获取远程文件
函数urlopen返回一个类似于文件的对象,可从中读取数据。如果要让urllib替你下载文件,并将其副本存储在一个本地文件中,可使用urlretrieve。
urlretrieve('http://www.python.org', 'C:\\python_webpage.html') |
14.1.3 其他模块
标准库中一些与网络相关的模块
模 块 |
描 述 |
asynchat |
包含补充asyncore的功能 |
asyncore |
异步套接字处理程序 |
cgi |
基本的CGI支持 |
Cookie |
Cookie对象操作,主要用于服务器 |
cookielib |
客户端Cookie支持 |
|
电子邮件(包括MIME)支持 |
ftplib |
FTP客户端模块 |