Python UDP编程

Python网络编程之UDP

一、Socket

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 建立网络通信连接至少需要两端(socket)。socket本质是编程接口(API),是对TCP/IP或UDP/IP协议的封装,TCP/IP或UDP/IP协议也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。

二、UDP协议

UDP(user datagram protocol)的中文叫用户数据报协议,属于传输层。
UDP是面向非连接的协议,它不与对方建立连接,而是直接把我要发的数据报发给对方。所以UDP适用于一次传输数据量很少、对可靠性要求不高的或对实时性要求高的应用场景。

  • udp通信中,服务器客户端通信流程:



    udp通信模型中,在通信开始之前,不需要建立相关的链接,只需要发送数据即可。

三、UDP控制台消息传输示例

服务器端:

from socket import *
from time import ctime

HOST = ''
PORT = 8888
BUFSIZ = 1024
ADDRESS = (HOST, PORT)

udpServerSocket = socket(AF_INET, SOCK_DGRAM)
udpServerSocket.bind(ADDRESS)      # 绑定客户端口和地址

while True:
    print("waiting for message...")
    data, addr = udpServerSocket.recvfrom(BUFSIZ)
    print("接收到数据:", data.decode('utf-8'))

    content = '[%s] %s' % (bytes(ctime(), 'utf-8'), data.decode('utf-8'))
    udpServerSocket.sendto(content.encode('utf-8'), addr)
    print('...received from and returned to:', addr)

udpServerSocket.close()

客户端:

from socket import *

HOST = '127.0.0.1'
PORT = 8888
BUFSIZ = 1024
ADDRESS = (HOST, PORT)

udpClientSocket = socket(AF_INET, SOCK_DGRAM)

while True:
    data = input('>')
    if not data:
        break

    # 发送数据
    udpClientSocket.sendto(data.encode('utf-8'), ADDRESS)
    # 接收数据
    data, ADDR = udpClientSocket.recvfrom(BUFSIZ)
    if not data:
        break
    print("服务器端响应:", data.decode('utf-8'))

udpClientSocket.close()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. UDP UDP,用户数据报传输协议,它位于TCP/IP协议的传输层,是一种无连接的协议,它发送的报文不能确定...
    PythonMaO阅读 4,140评论 0 3
  • 网络编程 一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运...
    go以恒阅读 2,107评论 0 6
  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 1,251评论 0 10
  • 1.1 TCP/IP协议组 TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成 IP层负责...
    F麦子阅读 2,838评论 0 25
  • 网络编程的概述 网络编程的实质就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。 一.OSI网络模型...
    思念挥霍阅读 390评论 0 0