第16章网络编程
套接字:用于进程间通讯,或IPC
种类:基于文件的和基于网络的
地址家族:AF,AddressFamily
两个进程都运行在同一台机器,且套接字是基于文件的
基于网络的套接字:AF_INET,Internet,最广泛使用
AF_INET6
套接字地址:主机与端口
面向连接的套接字:提供顺序,可靠,非重复数据传输,TCP
创建TCP他姐自,指定套接字类型:SOCK_STREAM,是刘套接字
无连接套接字:UDP,不能呢个保证可靠和非重复性,性能更好
套接字类型为SOCK_DGRAM,数据报
16.3.1创建套接字:
socket(socket_family , socket_type ,protocol=0)
socket_family: AF_INET,AF_UNIX
socket_type: SOCK_STREAM , SOCKDGRAM
protocol:默认为0
tcpSock = socket.socket(socket.AF_INET ,socket.SOCK_STREAM)
服务端套接字函数
s.bind():绑定地址(主机,端口号对)到套接字
s.listen():开始TCP监听
s.accept():被动接受客户端连接
客户端套接字函数
s.connect() 连接TCP服务器
s.connect_ex():返回错误吗
s.recv():接受TCP数据
s.send():发送TCP数据
s.sendall() 完整发送TCP数据
s.recvfrom()接受UDP数据
s.sendto():发送UDP数据
s.closs():关闭套接字
服务端需要绑定到本地地址,创建线程来处理客户请求
SocketServer
需要把服务器的无限循环放在try-except语句总,捕获异常,
调用close()关闭服务器套接字
16.3.6创建一个UDP服务器
直接等待进来的连接就好
UDP服务器
ss = socket()
ss.bind()
while True:
cs= ss.recvfrom()
ss.sendto()
ss.close()
UDP客户端:
cs = socket()
while True:
cs.sendto()
cs.recvfrom()
cs.close()
16.4 *SocketServer模块
重要,含有这方面处理
BaseServer
TCPServer , UDPServer: 基于网络同步的TCp/UDP服务器
16.5
Twisted框架介绍
Twisted:事件驱动的网络框架
select 模块在底层套接字程序中与socket模块联合使用,可同时管理多个套接字对象
select模块作用:同时监听多个套接字的连接
SocketServer:提供创建服务器的系统
async*:异步开发支持库