如何使用Python实现多任务版的udp聊天器

本篇文章将为大家分享一下如何使用Python实现多任务版的udp聊天器,结合具体案例形式分析了Python基于udp的聊天器功能相关实现与使用技巧,有需要的小伙伴可以参考一下。

一、案例示例

二、案例说明

1、编写一个有2个线程的程序。

2、线程1用来接收数据然后显示。

3、线程2用来检测键盘数据然后通过udp发送数据。

三、参考代码

import socket
import threading


def send_msg(udp_socket):
   """获取键盘数据,并将其发送给对方"""
   while True:
       # 1. 从键盘输入数据
       msg = input("\n请输入要发送的数据:")
       # 2. 输入对方的ip地址
       dest_ip = input("\n请输入对方的ip地址:")
       # 3. 输入对方的port
       dest_port = int(input("\n请输入对方的port:"))
       # 4. 发送数据
       udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port))


def recv_msg(udp_socket):
   """接收数据并显示"""
   while True:
       # 1. 接收数据
       recv_msg = udp_socket.recvfrom(1024)
       # 2. 解码
       recv_ip = recv_msg[1]
       recv_msg = recv_msg[0].decode("utf-8")
       # 3. 显示接收到的数据
       print(">>>%s:%s" % (str(recv_ip), recv_msg))


def main():
   # 1. 创建套接字
   udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
   # 2. 绑定本地信息
   udp_socket.bind(("", 7890))

   # 3. 创建一个子线程用来接收数据
   t = threading.Thread(target=recv_msg, args=(udp_socket,))
   t.start()
   # 4. 让主线程用来检测键盘数据并且发送
   send_msg(udp_socket)


if __name__ == "__main__":
   main()

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/10609.html

(0)
晴川运维晴川运维
上一篇 13小时前
下一篇 13小时前

相关推荐

  • Linux系统zypper命令使用实例

    zypper 是一个简单易用的命令行包管理器,它使用了一个软件包管理库叫做 libzypp 。Zypper 能够操作软件安装源 (比如 Build Service 或 标准 ope…

    Linux系统 2025年6月4日
  • Linux mysql定时备份脚本

    在生产环境上,为了避免数据的丢失,通常情况下都会定时的对数据库进行备份,本篇文章重点为大家讲解一下 mysql定时备份具体方法。 1. 创建备份脚本 备份脚本: #!/bin/ba…

    Linux系统 2025年6月8日
  • Linux Tee 命令使用实例

    Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。在执行Linux命令时,我们既想把输出保存到文件中,又想在屏幕上看到输出内容,那么可以用到tee…

    Linux系统 2025年6月8日
  • Linux下常用的剪贴板

    Linux下有哪些常用的剪贴板?本篇文章将为大家分享一下Linux下常用的剪贴板,有需要的小伙伴可以参考一下。 1.CopyQ 这种高级的剪贴板管理器适用于大多数平台上。它有编辑和…

    Linux系统 2025年6月10日
  • Linux中使用TCP 封装器加强网络服务安全

    在这篇文章中,我们将会讲述什么是 TCP 封装器TCP wrappers以及如何在一台 Linux 服务器上配置他们来限制网络服务的权限。在开始之前,我们必须澄清 TCP 封装器并…

    Linux系统 2025年6月11日
  • Linux i2c子系统(一) :编写i2c设备驱动

    I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半导体(现被NXP收购)开发的两线时串行总线,常用于微控制器与外设之间的连接。本文…

    Linux系统 2025年6月8日
  • 面向系统管理员的网络管理指南

    一个使管理服务器和网络更轻松的 linux 工具和命令的参考列表。 如果你是一位系统管理员,那么你的日常工作应该包括管理服务器和数据中心的网络。以下的 Linux 实用工具和命令 …

    Linux系统 2025年6月8日
  • Shell脚本习题:MySQL分库分表备份

    脚本详细内容 [root@db02 scripts]# cat /server/scripts/Store_backup.sh  &nbsp…

    Linux系统 2025年6月8日
  • 详解日志分析工具GoAccess

    GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序(terminal)即可访问。能为系统管理员提…

    Linux系统 2025年6月4日
  • C++中double类型保留三位小数点

    我们知道C语言中,如果要求输出结果保留三位小数,我们可以使用pritf()函数轻松的解决。但是的输出运算符 我以一个例子作为讲解: 已知线段的两个端点坐标是A(xa,ya),B(x…

    Linux系统 2025年6月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注