@
目录
Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法。RFC 768 [1] 描述了 UDP。
Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的的事情。面向连接的是 TCP,该协议几乎做了所有的事情
发送端
import socket
def main():
#创建一个udp套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#如果没有绑定,故接收端只有随机端口接收
udp_socket.bind(("",7789))
while True:
#获取数据
send_data = input("请输入要发送的数据")
if send_data == "exit":
break
#ip,port
address = ("127.0.0.1",7788)
#可以使用套接字收发数据 第一个参数必须为二进制数据 第二个参数是一个元组(ip,port)
# udp_socket.sendto(b"hahaha",address)
udp_socket.sendto(send_data.encode("utf-8"),address)
#关闭
udp_socket.close()
if __name__ == '__main__':
#发送服务器启动
main()
接收端
import socket
def main():
# 创建一个udp套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定本地的相关信息,如果一个网络程序不绑定,系统会随机分配
address = ("127.0.0.1", 7788)
udp_socket.bind(address)
for i in range(0,100):
#等待接收对方发送的数据 1024表示的是每一次接收的最大字节数
recv_data = udp_socket.recvfrom(1024)
recv_mess = recv_data[0]
send_addre = recv_data[1]
print(recv_mess.decode("utf-8"),str(send_addre))#recv_mess.decode("utf-8")
# 关闭
udp_socket.close()
if __name__ == '__main__':
print("接收服务器启动")
main()
注意
手机扫一扫
移动阅读更方便
你可能感兴趣的文章