udp协议下的套接字编程
一.udp是无链接的 不可靠的
而上篇的tcp协议是可靠的,会有反馈信息来确认信息交换的完成与否
基于udp协议写成的服务端与客户端,各司其职,不管对方是否接收到信息,只需自己发送了即可
二.客户端
import socket #买手机 -- 套接字家族 | 端口协议 phone = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #服务端地址 ip_port = (‘127.0.0.1‘,8001) #实现多次发送信息 while True: #自定义一条信息 msg = input(‘输入一条信息:‘) #若信息为空,会导致程序卡死,用if判断跳过此情况 if not msg: continue # 接通电话后发信息 指定数据 和 服务端地址 phone.sendto(msg.encode(‘utf-8‘),ip_port) print(‘向服务端发送信息:‘,msg) #接收反馈信息 指定一次接收的量 data,addr = phone.recvfrom(10) print(‘成功接收到服务端反馈信息 ‘) #关机 phone.close()
三.服务端
import socket #买手机 -- 套接字家族 | 端口协议 phone = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #买电话卡 -- 监听一个地址- ip | 端口号 phone.bind((‘127.0.0.1‘,8001)) #多次接发信息 while True: #电话接通后接收信息 指定一次接收信息的数量 #返回数据 和 客户端地址 data,addr = phone.recvfrom(10) print(‘接受到客户端信息为: ‘,data) #接收到信息后,反馈给client端一个信息,以告诉他已成功接收 phone.sendto(data,addr) print(‘成功向客户端发送一个反馈信息‘) #完成一切操作后关掉link,再关机 link.close() phone.close()
四.总结——简化
客户端:
cs = socket() # 创建客户套接字 comm_loop: # 通讯循环 cs.sendto()/cs.recvfrom() # 对话(发送/接收) cs.close() # 关闭客户套接字
服务端:
1 ss = socket() #创建一个服务器的套接字 2 ss.bind() #绑定服务器套接字 3 inf_loop: #服务器无限循环 4 cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送) 5 ss.close() # 关闭服务器套接字
原文地址:https://www.cnblogs.com/xxp1624/p/11241611.html
时间: 2024-09-30 02:00:36