0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UDP简易聊天程序搭建方案

马哥Linux运维 来源:51cto 2024-01-10 18:27 次阅读

网络编程Python强大功能之一,而搭建一个使用UDP协议的聊天程序是理解网络编程基础概念的绝佳例子。在本教程中,我们将使用Python的socket库来创建一个简单的UDP聊天程序,允许两个用户在同一网络上互发消息。

UDP协议简介

UDP(用户数据报协议)是一个简单的面向数据报的传输层协议。与TCP不同,UDP不保证数据包的顺序或可靠性,因此通常用于需要快速传输如视频流或在线游戏的场合。这也让UDP成为实现简易聊天程序的理想选择,因为它的轻量级使得我们可以专注于程序逻辑而不是数据传输的复杂性。

环境准备

在开始之前,请确保你的环境中已安装Python 3.x。无需安装其他外部库,因为socket库是Python的标准库。

创建UDP服务器

首先,我们需要创建一个UDP服务器来接收和转发消息。

import socket


def udp_server(host='127.0.0.1', port=12345):
    # 创建UDP套接字
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 绑定套接字到地址和端口
    server_socket.bind((host, port))
    print(f"UDP server up and listening at {host}:{port}")


    try:
        while True:
            # 接收客户端消息
            message, client_address = server_socket.recvfrom(1024)
            print(f"Message from {client_address}: {message.decode()}")


            # 发送响应消息
            server_socket.sendto(b'Got your message!', client_address)
    except KeyboardInterrupt:
        server_socket.close()
        print("
Server shutdown.")


if __name__ == "__main__":
    udp_server()

这段代码将启动一个UDP服务器,它会监听本机的12345端口(你可以选择任意未被占用的端口)。服务器会打印收到的消息,并向客户端发送确认消息。

创建UDP客户端

接下来,我们创建客户端代码,它将发送消息到UDP服务器,并接收服务器的响应。

import socket


def udp_client(server_host='127.0.0.1', server_port=12345):
    # 创建UDP套接字
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


    try:
        while True:
            # 输入要发送的消息
            message = input("Enter message to send: ")
            if message == "exit":
                break


            # 发送消息到服务器
            client_socket.sendto(message.encode(), (server_host, server_port))


            # 接收服务器响应
            response, _ = client_socket.recvfrom(1024)
            print(f"Server response: {response.decode()}")
    finally:
        client_socket.close()
        print("Client shutdown.")


if __name__ == "__main__":
    udp_client()

在客户端程序中,用户被提示输入消息。每条消息都会编码为字节流后发送到服务器。接着,客户端等待服务器的响应并打印它。

运行聊天程序

要运行你的聊天程序,首先在一个终端窗口启动服务器:

python udp_server.py

然后,在另一个终端窗口启动客户端:

python udp_client.py

现在,你可以在客户端窗口输入消息并查看服务器的响应了。记得,你可以在不同的机器上运行服务器和客户端,只要它们在同一个网络中。

结论

恭喜你,你现在已经有了一个工作中的UDP聊天程序。虽然这个程序非常简单,但它涵盖了网络编程的一些基本概念,为你继续探索更复杂的网络应用提供了基础。随着你的探索,你可能会想要添加更多功能,比如多线程以支持多个客户端,或者引入错误处理来应对网络异常。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8129

    浏览量

    82570
  • UDP
    UDP
    +关注

    关注

    0

    文章

    311

    浏览量

    33630
  • 网络编程
    +关注

    关注

    0

    文章

    64

    浏览量

    9982
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83480

原文标题:你会搭建一个UDP简易聊天程序吗?

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于labview的tcp/ip聊天

    `相关课程推荐:《8周LabVIEW视觉项目编程实战特训营》 这个程序是在一个国外论坛看到的 好久之前的主要是通过LabVIEW的tcp/ip做的一个简易聊天室包括服务端和客户端的VI如图效果大家
    发表于 11-24 15:28

    labview聊天程序

    Llabview聊天程序哈哈哈哈哈哈哈
    发表于 08-29 20:27

    labview聊天程序

    本帖最后由 eehome 于 2013-1-5 10:04 编辑 labview聊天程序
    发表于 08-29 20:39

    PC与PC的聊天程序

    本帖最后由 eehome 于 2013-1-5 10:01 编辑 新的聊天程序
    发表于 09-07 07:48

    如何利用ESP32和Ubuntu搭建UDP通信系统?

    如何利用ESP32和Ubuntu搭建UDP通信系统?
    发表于 01-20 06:09

    基于STM32F107的UDP服务器程序

    基于STM32F107的UDP服务器程序
    发表于 03-26 15:44 151次下载

    什么是udp攻击?udp攻击的基本原理是什么

    UDP淹没攻击是导致基于主机的服务拒绝攻击的一种。UDP是一种无连接的协议,而且它不需要用任何程序建立连接来传输数据。当攻击者随机地向受害系统的端口发送UDP数据包的时候,就可能发生了
    发表于 12-08 09:52 2.4w次阅读

    udp协议源码详解

    音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和OICQ就是使用的UDP协议。
    发表于 12-08 16:03 8905次阅读

    如何制作CMD聊天程序

    《现在打开两个程序,输入您的名字,然后说些什么。繁荣!您刚刚制作了一个聊天程序。现在,您与其他人聊天所要做的就是与他们共享文件夹!共享文件夹。..右键单击文件夹,然后按共享。现在,指定
    的头像 发表于 11-26 14:32 5463次阅读
    如何制作CMD<b class='flag-5'>聊天</b><b class='flag-5'>程序</b>

    使用UDP协议设计P2P模式聊天的资料和程序资料概述

    层协议,提供面向事务的简单不可靠信息传送服务。UDP协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序UDP协议的全称是用户数据报协议,在网
    发表于 11-28 16:23 4次下载
    使用<b class='flag-5'>UDP</b>协议设计P2P模式<b class='flag-5'>聊天</b>的资料和<b class='flag-5'>程序</b>资料概述

    设计的一个聊天程序免费下载

    本文档的主要内容详细介绍的是设计的一个聊天程序免费下载。
    发表于 12-17 08:00 2次下载
    设计的一个<b class='flag-5'>聊天</b>室<b class='flag-5'>程序</b>免费下载

    如何使用java设计UDP协议网上聊天程序

    网络资源。并且避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接!因此,这个软件是极具适应性和实用性的即时通讯软件!本次课程设计的目的是学习基于UDP协议实现网络聊天程序,已达到学会面向无连接方式
    发表于 03-28 11:19 9次下载
    如何使用java设计<b class='flag-5'>UDP</b>协议网上<b class='flag-5'>聊天</b><b class='flag-5'>程序</b>

    嵌入式Linux应用程序开发-(9)UDP网络通信应用程序UDP-Socket)

    基于UDP协议的网络通信应用程序UDP-Socket)前两篇文章介绍了基于TCP/IP协议的网络通信应用程序。嵌入式Linux应用程序开发
    发表于 11-02 12:21 34次下载
    嵌入式Linux应用<b class='flag-5'>程序</b>开发-(9)<b class='flag-5'>UDP</b>网络通信应用<b class='flag-5'>程序</b>(<b class='flag-5'>UDP</b>-Socket)

    #单片机网课作业课设#简易电子钟PROTEUS电路和C语言程序搭建入门

    #单片机网课作业课设#简易电子钟PROTEUS电路和C语言程序搭建入门主要功能介绍操作的视频可见:建立完成后的电路文件和程序文件可见:步骤如下1.新建工程2.本电路中使用到的仿真器件3
    发表于 12-29 18:55 0次下载
    #单片机网课作业课设#<b class='flag-5'>简易</b>电子钟PROTEUS电路和C语言<b class='flag-5'>程序</b><b class='flag-5'>搭建</b>入门

    Chirp PubNub聊天应用程序

    电子发烧友网站提供《Chirp PubNub聊天应用程序.zip》资料免费下载
    发表于 06-13 10:50 0次下载
    Chirp PubNub<b class='flag-5'>聊天</b>应用<b class='flag-5'>程序</b>