如何使用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)
晴川运维晴川运维
上一篇 2025年6月26日
下一篇 2025年6月26日

相关推荐

  • 如何备份一个磁盘分区

    通常你可能会把数据放在一个分区上,有时候可能需要对该设备或者上面的一个分区进行备份。树莓派用户为了可引导 SD 卡当然有这个需求。其它小体积计算机的用户也会发现这非常有用。有时候设…

    Linux系统 2025年6月8日
  • 通过Memcached实现session server会话保持

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度…

    Linux系统 2025年10月21日
  • 简单介绍一下kafka常用命令

    Kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,本…

    Linux系统 2025年6月8日
  • Linux下开放指定端口号

    linux系统中控制端口的开启与关闭可以由命令来执行,本篇文章为大家详细讲解一下Linux下开放端口方法。 方式一 CentOS: 1、开启防火墙   &nbs…

    Linux系统 2025年7月5日
  • 在Django中使用ElasticSearch

    Elasticsearch可以使我们快速,近乎实时地存储,搜索和分析大量数据,并在几毫秒内给出答复。之所以能够获得快速的搜索响应,是因为它可以直接搜索索引,而不是直接搜索文本。 什…

    Linux系统 2025年6月8日
  • Linux下使用MPlayer具体方法

    MPlayer是在Linux平台上的最强大的电影播放器的Windows版本。MPlayer能播放几乎所有流行的音频 和视频格式,相对其它播放器来说,资源占用非常少,不需要任何系统解…

    Linux系统 2025年10月26日
  • NGINX动静分离

    动静分离主要是通过nginx+PHP-FPM来实现,其中nginx处理图片,html等静态的文件,PHP处理动态程序[PHP-FPM] 简单点来说,就是用户在请求的时候,如果只是简…

    Linux系统 2025年9月20日
  • Acme.sh 申请 https 证书具体方法

    HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷是为了保证数据安全。 近两年,Google、Baidu、Facebook 等这样的互联网巨头,不谋而合地开始大力…

    Linux系统 2025年6月8日
  • 以源码的方式讲解一下Rarp协议

    rarp是通过mac地址查询ip的协议,主要用于有mac的主机,但是没有ip的情况。 rarp协议的格式和arp协议是一样的,他们都是通过一种地址查询另外一种地址。操作系统内维护了…

    Linux系统 2025年10月19日
  • Linux下安装LDAP

    LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址被使用,不过根据组织者的需要,它可以做得更…

    Linux系统 2025年6月8日

发表回复

登录后才能评论