相信来到这个文章里面的朋友不会对udp陌生,话不多说直接开始。
由于udp没有建立连接,也没有实际上的客户端和服务器端。
但是我们需要让一个udp来充当服务器!实现消息广播从而达到聊天室的效果。
以下是充当服务器的udp代码图片↓↓↓

如果是想在linux上运行的朋友按照管理在第一行加上

#!usr/bin/env python3

实现原理很简单,当udp服务器收到某个地址给它发过来的消息的时候,将这个地址加入到列表中(方便广播),以后再收到其它地址发过来的消息的时候为这个列表中的每个地址发送同样的消息,并附上发送者的ip地址。
如果列表只增不减,最后效率会变低,会浪费很多时间和资源。
所以我们约定,当某个聊天室成员想退出聊天室的时候,发送一个quit()字符串过去,udp服务器就明白你要退出去了,就把你的ip地址从广播列表中移出去,这条消息并不会广播出去。(由于我这里没写界面,所以需要手动发送quit(), 如果写了界面的话,可以把发送这个消息放到界面的关闭按钮中,即一点关闭就会发送这条消息,那就很方便啦!)

udp服务器端实现的很简单。同样的,客户端也很简单

linux用户同理在第一行加上文提到的代码。
udp客户端基本没什么实现的难度,就一个多线程同时实现收和发。
发消息对着服务器的地址发送,然后你的消息就会被所有正在聊天室内的客户端接收到。同时另外开一个线程保证在发消息的同时也能显示出其他客户端发送的消息,这样我们就实现了聊天室的功能啦!(由于这里同样没有写界面,所以同时收发消息就会显得有点格式乱,写了界面之后可以把收和发放到两个框框里面,就会很美观啦!)

另外这里标注一下,在我的代码中,udp客户端内部固定了某个服务器udp,也就是说,udp客户端一打开就连上了一个特定的服务器。这里需要改造一下,不然是用不了的。要么把服务端内部的特定地址改成你想当作服务器的那个ip的地址,要么可以使用输入的方式动态决定服务器地址,都可以~

虽然看着很简陋,但是要是界面写得好,代码再优化一下,完全可以达到qq群聊天的效果!!

如果想复制代码或者对代码有什么疑问想和我讨论的话欢迎关注我的公众号【阳仔不想当码农】。
或者来我的个人博客落阳的博客,我会很高兴和你交流!

udp聊天?使用udp+python实现多人聊天室相关推荐

  1. 基于python面向对象多人聊天室

    基于python面向对象多人聊天室 1.项目环境 项目名称:多人聊天室 项目模式:C/S 开发环境:win10+python3.8+pycharm 所需知识:python GUI编程,多线程编程,网络 ...

  2. 用python模拟多人聊天服务器以及客户端(带图形化界面)

    所用python的知识点: 网络编程:socket 多线程:threading 图形化编程:tkinter 首先要模拟出一个服务器,以供客户端连接,注意这里的要用死循环,要让服务区一直处于开放的状态 ...

  3. 基于Python的多人聊天室的设计与实现

    基于Python的多人聊天室的设计与实现 摘要  本文介绍了基于即时通讯的Python实现web版多人聊天室的设计和实现.这个系统利用了多种先进的技术,如Django.Channels.WebSock ...

  4. python tcp通信如何实现多人聊天,Python实现多用户全双工聊天(一对一),python多用户,多用户全双工聊天简陋...

    Python实现多用户全双工聊天(一对一),python多用户,多用户全双工聊天简陋 多用户全双工聊天简陋版 简单实现了两个客户端之间的通信,客户端发送消息,先由服务器接收,然后服务器转发到另一客户端 ...

  5. 计算机网络实验二:UDP套接字编程实现多人聊天

    一.实验目的 1. 实现一个能够在局域网中进行点对点聊天的实用程序. 2. 熟悉c++.Java等高级编程语言网络编程的基本操作. 3. 基本了解对话框应用程序的编写过程. 4. 实现UDP套接字编程 ...

  6. python实现多人聊天论文_python网络编程 双人多人聊天

    在学习网路编程时,我们首先要考虑的是其中的逻辑,我们借助打电话的形式来了解网络编程的过程, 我们打电话时属于呼叫方,接电话的属于被呼叫方,那么被呼叫方一直保持在待机状态,等待主呼叫方 呼叫,只有在被呼 ...

  7. python实现多人聊天udp_python—多任务版udp聊天机器人

    将多任务(多线程)引入到udp聊天机器人,可以实现同时发送消息和接收消息 1 import socket 2 import threading 3 4 5 def udp_send(udp_socke ...

  8. vc udp 广播接收和发送_udp聊天?使用udp+python实现多人聊天室

    信来到这个文章里面的朋友不会对udp陌生,话不多说直接开始. 由于udp没有建立连接,也没有实际上的客户端和服务器端. 但是我们需要让一个udp来充当服务器!实现消息广播从而达到聊天室的效果. 以下是 ...

  9. python socket 多人聊天室

    参考来源(其实我从上面复制了一点): Python 的 Socket 编程教程  http://www.oschina.net/question/12_76126 Python线程指南 http:// ...

  10. python实现多人聊天udp_python_udp_多人聊天室_简单版

    udp-一定是client端先发送数据. server.py import socket friend_lst = {'alex':'32','太白':'33'} sk =socket.socket( ...

最新文章

  1. android8.1获取蓝牙地址,[蓝牙] Android 8.1 获取蓝牙设备地址无效;02:00:00:00:00:00
  2. 极客新闻——07、团队管理方法,让员工做事效率翻倍
  3. 专访高磊:安卓APK安全加固的引领者
  4. 【剑指offer-Java版】30最小的K个数
  5. PowerDesigner概念模型详解
  6. gRPC-Web发布,REST又要被干掉了?
  7. python自动发送邮件_Python自动发送邮件
  8. [转载] python中import问题
  9. 机器学习之K-means算法:深入浅出K-Means算法
  10. Postman 安装
  11. 【数据应用案例】Face2Face升级版——HeadOn
  12. FILD FLD FSTP
  13. 解决python运行selenium程序执行完后,Chrome浏览器自动关闭的问题
  14. Windows驱动开发第8课(驱动签名与禁用签名打开系统测试模式)
  15. PHP毕业设计项目作品源码选题(2)电子商务网上购物商城毕业设计毕设作品开题报告
  16. 作为元宇宙的雏形:GameFi领域年末正在不断成长
  17. 【毕设】通过RGB识别红外图像火点(matlab)
  18. 自建家庭云手机文件备份系统,你的文件你控制
  19. 计算机网络收集职业生涯规划的原则和步骤,职业生涯规划的步骤及原则介绍
  20. Java修炼 之 基础篇(二)Java语言构成

热门文章

  1. 简述RHEL7新特性(二)
  2. arduino 部分有用的函数
  3. 关于C#多线程之一——异步委托
  4. java8计算两个日期之间的天数
  5. 模块间相互调用需要注意的问题
  6. 搞定机器学习面试,这些是基础!
  7. nginx 启动、重启、关闭
  8. 【转】Nginx双机热备高可用解决方案【二】
  9. SCOM 2012系列⑪单台服务器性能图监控
  10. HTML5的File API