UDP 编程

UDP 编程

服务端例子

TCP 发送数据的时候, 会建立好 TCP 的连接, 所以不需要指定地址, 而 UDP 是面向无连接的, 每次发送都需要指定发送给谁。

# udp_server.py

import socket

HOST = '127.0.0.1'
PORT = 5000

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建套接字时类型选择 SOCK_DGRAM
s.bind((HOST, PORT)) # 绑定套接字到本地 IP 与端口(传入的是 tuple)

# UDP 不需要监听连接

print(f'Server start at: {HOST}:{PORT}')

while True:
    data, addr = s.recvfrom(1024) # 不需要接收连接, 直接接收数据
    print(f'Received from {addr}')
    data = data.decode('utf-8')
    print(data)
    s.sendto(bytes(f'Server received {data}', encoding='utf-8'), addr) # 给客户端发送数据

s.close()

客户端例子

# udp_client.py

import socket


HOST = '127.0.0.1'
PORT = 5000


s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 不需要用 connect() 方法连接到服务器


while True:
    cmd = input('Input your msg:')
    s.sendto(bytes(cmd, encoding='utf-8'), (HOST, PORT))
    data, addr = s.recvfrom(1024)
    print(data.decode('utf-8'))

启动服务端和客户端

启动服务器:

> python udp_server.py
Server start at: 127.0.0.1:5000
Received from ('127.0.0.1', 55893)
你好 # 客户端发送的消息
Received from ('127.0.0.1', 55893)
告辞 # 客户端发送的消息

启动客户端:

> python udp_client.py
Input your msg:你好 # 输入要发送的内容
Server received 你好 # 服务端返回的内容
Input your msg:告辞
Server received 告辞
Input your msg:
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 4,997评论 0 10
  • 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编...
    程序员欧阳阅读 6,143评论 1 37
  • Socket编程 1基础知识 协议 端口号(辨别不同应用) TCP/IP协议 是目前世界上应用最广泛的协议是以TC...
    __豆约翰__阅读 4,741评论 0 3
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 14,473评论 6 174
  • 11.1 引言 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一...
    张芳涛阅读 7,903评论 1 6