计算机网络技术基础用户数据报协议UDP是什么?
1、提起UDP小编要先给大家讲的是“TCP/IP协议”。
而UDP则是“TCP/IP协议”里的传输协议之一。
2、UDP是一个简单的面向数据报的传输层协议
UDP提供无连接、不可靠的服务:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。
3、端口号表示发送进程和接收进程。TCP和UDP用目的端口号来分用来自IP层的数据的过程。TCP端口号与UDP端口号是相互独立的。
UDP长度字段指的是 UDP首部和UDP数据的字节长度。该字段的最小值为8字节(发送一份0字节的UDP数据报)。
UDP检验和覆盖UDP首部和UDP数据。UDP的检验和是可选的
1、服务端代码:
# _*_ coding: utf-8 _*_
import time
from socket import *
'''创建简单的udp服务端'''
# 创建套接字
soc = socket(AF_INET, SOCK_DGRAM)
# 设置本地地址
local_addr = ("", 50000)
# 绑定本地地址
soc.bind(local_addr)
# 进入等待服务模式
while True:
# 一次接受的最大字节数为3000
rec_addr, rec_txt = soc.recvfrom(3000)
# 打印接收的结果
print("%s>>%s"%(rec_addr, rec_txt))
# 为避免cpu占用过高,使用延时策略
time.sleep(0.5)
2、客户端代码:
# _*_ coding: utf-8 _*_
from socket import *
import time
# 设置服务端和客户端ip和端口信息
local_addr = ("", 51000)
dest_addr = ("", 50000)
while True:
# 创建端口
soc = socket(AF_INET, SOCK_DGRAM)
# 绑定端口
soc.bind(local_addr)
mes = input("请输入需要发送的信息:")
# 发送套接字
soc.sendto(mes.encode("utf-8"), dest_addr)
# 延时策略
time.sleep(0.1)
# 关闭套接字
soc.close()
3、向服务端发送消息5个要点:
客户端ip
客户端端口
服务端ip
服务端端口
需要发送的信息
4、(注意划重点啦!)
容易出错的点:
使用sendto或recvfrom函数的时候,接收到的第一个参数是消息第二个参数是ip和端口信息
window decode参数为gbk(国标码,windows的编码问题一直是个问题 -_- )
5、小编编写技巧:
先把5要点(客户端ip, 客户端端口, 服务端ip, 服务端端口, 需要发送的消息)写好,再创建套接字
快速创建udp套接字写法例子:
from socket import *
# 创建udp套接字,命名为soc
soc = socket(AF_INET, SOCK_DGRSM)