网络编程(socket)套接字之基于udp的套接字
基于udp的网络编程
特点:不需要提前建立链接,每次收发都需要获取ip和端口
又称数据报协议,一次发送对应一次接收,不会产生粘包问题
不可靠传输,发送数据不需要回复ACK确认信息
没有链接,服务端或者客户端的启动不需要先后顺序
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() # 关闭客户套接字
示例代码
基于UDP协议通信的套接字
import socket server = socket.socket(socket.AF_INET,socket.SOXK_DGRAM) server.bind(('127.0.0.1',8080)) while True: client_data,client_addr=server.recvfrom(1024) server.sendto(client_data.upper(),client_addr)
import socket client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) while True: msg = input(' : ' ).strip() client.sendto(msg.encode('utf-8'),('127.0.0.1',8080)) res,server_addr = client.recvfrom(1024)
*********************
常用端口: web端口 80
dns端口 53
dhcp端口 67