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

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

#!usr/bin/env python3

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

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

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

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

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

如果想复制代码或者对代码有什么疑问想和我讨论的话欢迎关注我私聊。

vc udp 广播接收和发送_udp聊天?使用udp+python实现多人聊天室相关推荐

  1. vc udp 广播接收和发送_UDP编程与DatagramSocket类:UDP的套接字

    API ----网络编程 ----DatagramPacket类 ----InetAddress类 java.lang.Object 继承者 java.net.DatagramSocket publi ...

  2. 13001.udp广播接收程序(python)

    文章目录 1 udp 广播接收程序 1 udp 广播接收程序 struct.unpack 函数默认解析的网络字节序数据 import io from socket import * import sy ...

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

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

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

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

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

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

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

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

  7. unity udp广播 android,unity发送局域网广播信息

    开发中有事须要一个功能是教师机经过广播发送给学生机实现通信,这时能够考试使用socket的udp广播功能来实现,代码以下:socket using System; using System.Text; ...

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

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

  9. python socket 多人聊天室

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

最新文章

  1. apt-get出现no public key available for the following key IDs
  2. python哨兵循环_Python:deadloop之非模态交互界面(模态循环)(哨兵循环)
  3. 字节跳动AI科学家王崇学生时代论文获“时间检验研究奖”
  4. Python小数据池
  5. frc机器人比赛主题_RCC机器人比赛
  6. [最短路-Floyd][数学]Luogu P1552 牛的旅行
  7. IT人是这么过圣诞的……
  8. 树莓派上使用 LCD1602 显示状态
  9. 自适应滤波器(Adaptive Filter)(1)--简介
  10. word中的表格复制到html代码,怎样将Word中的表格复制到Excel中还保持原有内容和格式?...
  11. 2009年 上海证券交易所新一代交易系统有多牛逼
  12. 整理springmvc+mybatis+velocity的整合一
  13. 我在离天空最近的城市
  14. linux安装浏览器 linux本地浏览器进行访问
  15. 用于土地使用和土地覆盖分类的landsat8的OLI波段组合的选择
  16. MiniJavaVM——一个Java虚拟机的设计和实现
  17. vue3学习5:v-for
  18. 20145312《信息安全系统设计基础》实验四 驱动程序设计
  19. 机器学习中的先验、后验和似然
  20. kong笔记——自定义插件开发

热门文章

  1. 华为机试HJ6:质数因子
  2. 连接Mysql弹出2005_正确安装数据库SQL2005和安装出现的问题的解决方法
  3. python 3.8.0安卓_Python 3.8.0 正式版发布,新特性初体验
  4. Jmeter的Throughput有误差与分布式测试时的坑
  5. python读取txt、csv以及xml文件
  6. TCP协议与UDP协议的区别
  7. 内容管理系统测试实战
  8. 普通的测试员和牛逼的测试员有什么区别?完成这两次跨越,你也可以
  9. 实践经验:应该如何使用Docker?
  10. pytorch 测试每一类_2D UNet++ VGGBlock脑胶质瘤分割BraTs + Pytorch实现