1、创建TCP 套接字,必须使用SOCK_STREAM 作为套接字类型。创建UDP 套接字,必须使用SOCK_DGRAM 作为套接字类型。 2、创建TCP套接字:tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 创建UDP套接字:u pSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 3、服务端方法: s.bind() s.listen() s.accept() 客户端方法:s.connect() s.connect_ex()
image.png
image.png
image.png
4、创建套接字通信模型:
image.png
5、监听实例:服务端(TCP)
!/usr/bin/env python
from socket import * from time import ctime
HOST='' PORT=21567 BUFSIZ=1024 ADDR=(HOST,PORT)
tcpSerSock=socket(AF_INET,SOCK_STREAM) tcpSerSock.bind(ADDR) tcpSerSock.listen(5)
while True: print('waiting for connection....') tcpCliSock,addr=tcpSerSock.accept() print('....connected from:',addr)
代码语言:javascript复制 while True:
data=tcpCliSock.recv(BUFSIZ)
if not data:
break
tcpCliSock.send(('[%s] %s' %(ctime(),data)).encode())
tcpCliSock.close()
tcpSerSock.close() 6、监听实例:客户端(TCP)
!/usr/bin/env python
from socket import * HOST='127.0.0.1' PORT=21567 BUFSIZ=1024 ADDR=(HOST,PORT)
tcpCliSock=socket(AF_INET,SOCK_STREAM) tcpCliSock.connect(ADDR)
while True: data=input('> ') if not data: break tcpCliSock.send(data.encode()) data=tcpCliSock.recv(BUFSIZ) if not data: break print(data.decode('utf-8'))
tcpCliSock.close() 7、通信实例:UDP(python2.x)
image.png
image.png
image.png
8、socket方法,属性
image.png
image.png
9、SocketServer模块类
image.png
10、使用TCPServer类和StreamRequestHandler类简化socket操作
image.png
image.png
客户端
image.png
11、Twisted库:第三方库,提供大量支持来建立完整的系统,包括网络协议、线程、安全性和身份验证、聊天/IM、DBM和RDBMS数据库集成、WEB、电子邮件、GUI工具等。
通信模拟:
image.png
image.png
image.png
12、*异步系统。研究至少5 个基于Python 的不同异步系统,可以从Twisted、Greenlets、
Tornado、Diesel、Concurrence、Eventlet、Gevent 等中选择。描述它们是什么,对
它们进行分类,并找到它们之间的相似点和差异性,然后创建一些演示代码示例。