01 C/S架构
client
server
创建通信端点,让server能够监听请求
02套接字
一种具有通信端点 创建套接字必须创建健在通讯之前
python支持:AF_UNIX,AF_NETLINK,AF_INET(基于网络的套接字)
03网络编程
socket模块
使用socket.socket()函数穿件套接字方法如下:
socket(socket family,socket_type,prtocol=0)
#socket_family 就是指套接字家族可以是AF_VNIX或AF_INET
#socket_type 就是指套接字类型,即SOCK_STREAM或SOCK_DGRAM
#protocol 是协议,默认为0,一般不填
创建 一个TCP/IP套接字,方法如下:
tcpsock = socket(socket.AF INET,socket.SOCK_STREAM)
套接字对象方法:
套接字的常用函数函数名描述服务器套接字
bind((hostname, port))绑定地址(注意这里是元祖)到套接字
listen()开启TCP监听
accept()被动接受客户端的连接(阻塞)
客户端套接字
connect((hostname, port))初始化TCP服务器连接
connect_ex()connect()的扩展版本,出错时返回错误码,而不是异常
公用的套接字
recv()接收TCP的数据
send()发送TCP数据
sendall()发送完整的TCP数据
recvfrom()接收UDP数据
sendto()发生UDP数据,因为没有连接,所以这里要指定发送的目标
getpeername()连接到当前套接字的远程地址
getsockname()当前socket地址
getsockopt()获得套接字的参数
setsockopt()设置套接字的参数
close()关闭套接字
面向模块的套接字函数
setblocking()设置套接字是否是阻塞模式
settimeout()设置阻塞套接字操作的超时时间
gettimeout()得到阻塞套接字操作的超时时间
面向文件的套接字函数
fileno()套接字的文件描述符
makefile()创建一个与套接字关联的文件对象
等会再写
创建网络编程实例
创建一个TCP服务器和客户端
创建TCP服务器的基本步骤创建套接字并绑定地址
开始监听连接
接收链接并发送数据
关闭套接字
创建TCP客户端的基本步骤创建套接字,连接服务器
收发数据
关闭套接字
这里的客户端仅仅可以用来发送消息给服务端,而服务端会接收消息然后重新发送回客户端importsocket HOST ='127.0.0.1'PORT =3214sk =socket.socket() try: sk.connect((HOST,PORT)) data = "hello"whiledata : sk.sendall(b'data') data =sk.recv(1024) print("Recv data:",data) data =raw_input('Please input message\n') exceptsocket.error aserr: print(err) finally: sk.close()
创建UDP服务器和客户端
创建UDP服务端的基本步骤创建套接字并绑定地址
开始监听连接
收发数据
关闭套接字importsocket HOST=''PORT =3214sk= socket.socket(socket.AF_INET,socket.SOCK_DGRAM) sk.bind((HOST,PORT)) data=Truewhiledata: data ,addr =sk.recvfrom(1024) ifdata == b'byte': breakprint("Recieve Data:",data.decode('utf-8')) sk.sendto(data,addr) sk.close()
创建UDP客户端的基本步骤创建套接字
收发数据
关闭套接字importsocket HOST='127.0.0.1'PORT =3214sk=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) data='hello'whiledata: sk.sendto(b'data',(HOST,PORT)) ifdata == "bye": breakdata,addr =sk.recvfrom(1024) print("Recv Data:",data) data =input('Please message:\n') sk.close()
# tcpclient与udpclient区别
# 建立socket时的区别
# tcp需要链接服务端
# 收发数据方法不同
这里与TCP的区别就是不用建立连接,客户端只是收发消息,并不会与服务器建立连接