美文网首页
网络编程之UDP编程

网络编程之UDP编程

作者: 大千世界1998 | 来源:发表于2018-10-10 21:37 被阅读0次

UDP编程

    UDP:User Datagram Protocal 用户数据报协议,是 OSI/RM 模型中隶属于传输层的面向无连接的网络数据传输协议。UDP 协议本身没有连接可靠性的保证,没有数据顺序 ACK 记录,没有数据重发等机制,因为没有那么多的数据传输控制特性,所以 UDP 进行数据传输过程中延迟较小,数据传输效率较高,比较适合对可靠性要求不是很高的程序!

    由于 UDP 面向无连接的特性,在编程处理的过程中,服务端和客户端的操作模式类似,唯一的区别就是服务端需要主动等待客户端发送消息,要将自己的 AF 暴露给客户端操作。

服务端开发

UDP服务端的编程操作步骤如下:

引入依赖的模块
定义服务器描述信息
创建 UDP 套接字对象并绑定主机
消息循环:和连接进入的客户端之间发送/收取消息
关闭连接,释放资源

操作伪代码描述如下:

# 引入必须模块
import socket

# 定义服务器信息
HOST = "" 
PORT = 25556
ADDRESS = (HOST, PORT)
BUFFER = 1024

 # 创建 UDP 套接字对象
udp_socket = socket.socket(…)

 # 绑定主机
udp_socket.bind(ADDRESS)
while True:
    # 接受消息,同时获取客户端地址
    msg, addr= udp_socket.recvfrom(..) 

    # 向指定的客户端发送 msg 消息
    udp_socket.sendto(msg, addr) 

实际项目代码开发:

# 引入依赖的模块
import socket

# 定义服务器信息
HOST = ""
PORT = 8080
ADDRESS = (HOST, PORT)
BUFFER = 1024

# 创建UDP套接字
udp_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 绑定主机
udp_server.bind(ADDRESS)

# 信息交互
while True:
    # 接收消息
    msg, addr = udp_server.recvfrom(BUFFER)
    print("client:", addr, msg.decode("utf-8"))

    # 发送消息
    info = input("enter message:")
    udp_server.sendto(info.encode("utf-8"), addr)

# 服务器退出,先关闭套接字[服务器一般不退出]
# udp_server.close()
客户端开发

客户端的开发更加简单,只需要明确目标主机信息就可以完成和目标主机之间的消息发送/接收。

定义伪代码如下:

udp_socket = socket.socket(..) # 创建 UDP 套接字对象
while True: # 消息循环
    udp_socket.sendto(data, addr) / recvfrom() 发送接收消息
udp_socket.close() # 关闭套接字

实际项目代码开发:

# 引入依赖的模块
import socket

# 定义服务器信息
HOST = "IP地址"
PORT = 8080
ADDRESS = (HOST, PORT)
BUFFER = 1024

# 创建UDP套接字
udp_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 信息交互
while True:
    # 发送消息
    info = input("enter massage:")
    udp_client.sendto(info.encode("utf-8"), ADDRESS)

    if info == "bye":
        udp_client.close()
        break

    # 接收消息
    msg, addr = udp_client.recvfrom(BUFFER)
    print(addr, "say:", msg.decode("utf-8"))

相关文章

  • 网络编程之UDP

    TCP(面向链接) 在正式收发数据前,必须和对方建立可靠的链接特点:安全(面向链接,保证对象一定能收到数据),传输...

  • 网络编程之UDP编程

    UDP编程     UDP:User Datagram Protocal 用户数据报协议,是 OSI/RM 模型中...

  • 网络编程三——TCP和UDP

    学习链接 这篇介绍TPC和UDP的文章,讲解得十分详细易懂:Android 网络编程之TCP、UDP详解。 我在这...

  • python 网络编程之UDP编程

    UDP编程 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP,UDP则是面向无连接的协议。 ...

  • 网络编程之UDP套接字编程

    UDP套接字服务端 创建UDP数据报套接字 绑定服务端地址(本机的IP和端口号) 消息的收发 关闭套接字 UDP套...

  • Java网络编程之UDP协议

    今天我们来聊聊 网络编程这部分的内容 网络编程 1)计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外...

  • 网络编程之Sockets通讯-UDP

    Unix中一切皆文件 读写I/O,其实是读写文件描述符fd,虽然它只是关联到这个文件的一个integer而已。FI...

  • 30.3. 企业级开发进阶2.3:UDP编程

    ** 本节内容如下** 什么是UDP协议 UDP网络编程——服务端程序开发 UDP网络编程——客户端程序开发 1....

  • Python UDP编程

    Python网络编程之UDP 一、Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一...

  • Java网络编程之UDP网络通信

    1 网络编程----UDPNo25 【Scanner scanner =new Scanner(System....

网友评论

      本文标题:网络编程之UDP编程

      本文链接:https://www.haomeiwen.com/subject/apwmaftx.html