UDP编程

2018-08-15  本文已影响0人  周周周__

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

服务端开发:

引入需要的模块

import socket

定义需要的服务器信息

HOST = ''
PORT = 10000
ADDRESS = (HOST, PORT)
BUFFER = 1024

创建UDP套接字

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

绑定主机

udp_socket.bind(ADDRESS)
print("主机正在准备接收数据")

接受/发送数据

while True:

#接收数据
msg, addr = udp_socket.recvfrom(BUFFER)
try:
    print("client:", addr, msg.decode("utf-8"))
except:
    print("client:", addr, msg.decode("gbk"))

#发送数据
info= input("请输入您要发送的消息:")
udp_socket.sendto(info.encode('utf-8'), addr)

客户端开发:

引入需要的模块

import socket

目标主机地址

HOST = '192.168.13.13'
PORT = 10000
ADDRESS = (HOST, PORT)
BUFFER = 1024

发送/接受消息

udp_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

while True:
info = input("请输入你要发送的消息:")
udp_client.sendto(info.encode('utf-8'), ADDRESS)
if info == "BYE":
udp_client.close()
break

msg, addr = udp_client.recvfrom(BUFFER)
try:
    print(addr, "say:", msg.decode("utf-8"))
except:
    print(addr, "say:", msg.decode("gbk"))

参考链接:https://www.jianshu.com/p/416fd0bea31d

上一篇 下一篇

猜你喜欢

热点阅读