udp是无链接的,先启动哪一端都不会报错
udp服务端
1 ss = socket() #创建一个服务器的套接字 2 ss.bind() #绑定服务器套接字 3 inf_loop: #服务器无限循环 4 cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送) 5 ss.close() # 关闭服务器套接字
udp客户端
cs = socket() # 创建客户套接字 comm_loop: # 通讯循环 cs.sendto()/cs.recvfrom() # 对话(发送/接收) cs.close() # 关闭客户套接字
1 客户端 2 from socket import * 3 cs = socket(AF_INET,SOCK_DGRAM) 4 while True: 5 msg = input('>>: ').strip() 6 cs.sendto(msg.encode('utf-8'),('127.0.0.1',8080)) 7 data,server_addr = cs.recvfrom(1024) 8 print(data.decode('utf-8')) 9 服务端 10 from socket import * 11 ss = socket(AF_INET,SOCK_DGRAM) 12 ss.bind(('127.0.0.1',8080)) 13 while True: 14 data,client_addr = ss.recvfrom(1024) 15 ss.sendto(data.upper(),client_addr)
基于udp实现qq通信
客户端 #Author:汪梦竹 #coding:utf-8 #基于udp的套接字通信 import socket BUFSIZE = 1024 udp_client_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) qq_name_dic = { '张三':('127.0.0.1',8080), '李四':('127.0.0.1',8080), '王五':('127.0.0.1',8080) } while True: qq_name = input('请选择聊天对象: ').strip() while True: msg = input('请输入消息: ').strip() udp_client_socket.sendto(msg.encode('utf-8'),qq_name_dic[qq_name]) back_msg,addr = udp_client_socket.recvfrom(1024) print('来自[%s:%s]的一条信息: 33[45m%s 33[0m'%(addr[0],addr[1],back_msg.decode('utf-8'))) udp_client_socket.close() 服务端 #Author:汪梦竹 #coding:utf-8 #基于udp的套接字通信 from socket import * ip_port = ('127.0.0.1',8080) udp_server_socket = socket(AF_INET,SOCK_DGRAM) udp_server_socket.bind(ip_port) while True: qq_msg,addr = udp_server_socket.recvfrom(1024) print('来自[%s:%s]的一条信息: 33[45m%s 33[0m'%(addr[0],addr[1],qq_msg.decode('utf-8'))) back_msg = input('回复消息: ').strip() udp_server_socket.sendto(back_msg.encode('utf-8'),addr)