一、socket模块tcp用法
1.服务端
1 import socket 2 sk = socket.socket() #创建一个socket对象 3 sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #避免端口占用问题 4 sk.bind(('127.0.0.1',10000)) #给socket对象绑定端口 5 sk.listen() #监听端口 6 conn,addr = sk.accept() #获取连接和客户端地址 7 ret = conn.recv(1024) #接收客户端信息 8 print(ret) 9 conn.send(b'yingda') #向客户端发送信息 10 ret = conn.recv(1024) 11 print(ret.decode('utf-8')) 12 conn.send('包子'.encode('utf-8')) 13 conn.close() #关闭连接 14 sk.close() #删除socket对象
执行结果
b'qingqiu' 中午吃什么?
2.客户端
1 import socket 2 sk = socket.socket() #创建socket对象 3 sk.connect(('127.0.0.1',10000)) #连接服务端IP和端口 4 sk.send(b'qingqiu') #发送信息 5 ret = sk.recv(1024) #接收信息 6 print(ret) 7 # sk.send('中午吃什么?'.encode('utf-8')) 8 sk.send(bytes('中午吃什么?',encoding='utf-8')) 9 ret = sk.recv(1024) 10 print(ret.decode('utf-8')) 11 sk.close() #删除socket对象
执行结果
b'yingda' 包子
二、socket模块udp用法
1.服务端
1 sk = socket.socket(type=socket.SOCK_DGRAM) #创建socket对象 2 sk.bind(('127.0.0.1',8080)) #给socket对象绑定端口 3 meg,addr = sk.recvfrom(1024) #接收信息,并记录地址 4 print(meg.decode('utf-8')) 5 sk.sendto(b'bye',addr) #根据地址发送信息 6 sk.close()
2.客户端
1 import socket 2 sk = socket.socket(type=socket.SOCK_DGRAM) #创建socket对象 3 ipaddr = ('127.0.0.1',8080) 4 sk.sendto(b'hello',ipaddr) #根据地址和端口发送信息 5 print(sk.recv(1024).decode('utf-8')) #接收信息并打印