UDP 简易聊天室

【Linux网络编程】基于UDP实现多人聊天室 基于UDP实现的多人聊天室,内附详细的服务器和客户端的思路步骤和代码实现。以及个个模块的实现。最后附上源代码给大家借鉴参考,希望对大家有所帮助。 代码中可能有许多不规范的地方,逻辑可能并不严谨,还请各位大佬不吝赐教。 整体项目并不复杂,只需要想清楚service和client分别需要做什么事。画好流程图,就会很清晰的将思路缕顺。从而只需要模块化的完成相应代码即可。 阅读详情
import socket

# 1、使用UDP协议实现,A用户给B用户发送消息,B用户负责将A发送的消息放到文本日志里

# 1、创建udp套接字
from threading import Thread

socket_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 绑定ip
socket_client.bind(("127.0.0.1", 7788))


# 2、发送数据
def send():
    try:
        while True:
            msg = input("发送的数据为:")
            socket_client.sendto(msg.encode("utf-8"), ("127.0.0.1", 8888))
            if msg == "88":
                break
    except:
        print("聊天室关闭")
    finally:
        socket_client.close()


def receive():
    try:
        while True:
            # 3.接收数据:
            c_msg, ip = socket_client.recvfrom(512)
            # 4、打印数据
            print(f"{ip}发送的数据:{c_msg.decode('utf-8')}")
    except:
        print("聊天室关闭")
    finally:
        socket_client.close()


Thread(target=send).start()
Thread(target=receive).start()



```python
# 服务器端
import socket

# 1、使用UDP协议实现,A用户给B用户发送消息,B用户负责将A发送的消息放到文本日志里

# 1、创建socket套接字
from threading import Thread

socket_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 2、绑定套接字的ip地址
socket_server.bind(("127.0.0.1", 8888))
import datetime


def receive():
    try:
        while True:
            # 3、接收数据
            msg, ip = socket_server.recvfrom(512)
            # 打印接收到的数据
            print(f"{ip}发送的数据:{msg.decode('utf-8')}")
            with open("socket_server_info", "a", encoding="utf-8") as w:
                w.writelines(msg.decode('utf-8') + " " + datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S") + "\n")
    except:
        print("聊天室关闭")
    finally:
        socket_server.close()


def send():
    try:
        while True:
            # 4、发送数据
            s_msg = input("请输入发送的消息:")
            socket_server.sendto(s_msg.encode("utf-8"), ("127.0.0.1", 7788))
            if s_msg == "88":
                break
    except:
        print("聊天室关闭")
    finally:
        socket_server.close()


Thread(target=receive).start()
Thread(target=send).start()
``

基于UDP的简单聊天室 聊天室功能:        1.其他用户上线通知。        2.其他用户下线通知。        3.获取在线列表。        4.用户之间点对点聊天。实现思想:        1.服务器端主要是解析客户端发送过来的各种指令,并作出相应的处理和回应。        2.客户端采用select管理套接口IO和标准输入IO,当有事件发生,做出相应的处理。        3.采用链表存储每个客... 阅读详情

相关推荐

Java网络编程——UDP聊天室(可能是全网最良心的聊天室了吧)

Java网络编程——UDP聊天室(1) 自从将要考试以来就没时间写过文章了,终于熬到了放假,闲着没事干就和小伙伴一起写了个聊天室玩玩。 本来是打算用TCP来作为通信协议的,但是呢,我这么菜,就换成简单的UDP通信协议了。 闲话就先说到这里。正文要紧。 UDP协议的基础内容: <from 百度百科> 算了我还是太懒了,直接附上链接吧: 传送门 UDP的基础类: 话不多说直接贴代码: ...

小小白的成长之路 1850

基于UDP的简易网络聊天室

基于UDP的简易聊天室

laoKdx的博客 2077

Qt Udp聊天室

之前看了《apue》,但是一直没做什么东西,很多概念性的东西了解之后不实践很容易忘掉。所以蹦出写一个聊天室的想法。当然Qt内部有关于Udp和Tcp相关类的封装,任何底层的函数都可以通过直接调用类里的方法完成。我也是参照了《Qt学习之路》这一系列文章做下去的。 先看一下Udp和Tcp什么区别: Udp是无连接,什么是无连接呢?就是说两台机器如果通信的话不需要事先经过一些约定(连接),可以直接传数据

sj_lxd的专栏 2540

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计

1855

一个简单的UDP聊天室

NULL 博文链接:https://sunshyfangtian.iteye.com/blog/642334

简易聊天室实验报告

网络聊天室实验报告,大家可以下载参考一下。

python基于udp的网络聊天室报告_Python实现基于socket的udp传输与接收功能详解

Python实现基于socket的udp传输与接收功能详解发布时间:2020-09-08 10:45:23来源:脚本之家阅读:69作者:独听钟声晚本文实例讲述了Python实现基于socket的udp传输与接收功能。分享给大家供大家参考,具体如下:udp的传输与接收windows网络调试助手下载:https://pan.baidu.com/s/1IwBWeAzGUO1A3sCWl20ssQ提取码:...

weixin_34773479的博客 961

Python 文字聊天室项目

Python 文字聊天室项目 可实现python的客户端和服务端的文字通信

Python的udp简单聊天室程序

udp简单聊天室程序import socketdef menu():    """这是聊天器菜单"""    print("简易版udp聊天器")    print("=" * 30)    print("1. 发送聊天信息")    print("2. 接收聊天信息")    print("3. 退出聊天")    print("=&qu

HelloWorld 2976

Java基于UDP传输协议的简单聊天室

1、java socket 2、UDP传输协议 3、json数据格式 4、简易聊天室程序实现

Python网络编程实验报告,实验一、实验二、实验三,附优秀课程设计报告

第一次实验内容是:使用Python3 实现TCP全连接端口扫描器;第二次实验内容是:用户从客户端进行登录后,可以进行从服务端下载文件;第三次实验内容是:多线程TCP端口扫描。最后课程设计是《多功能服务端与客户端》,具体要求如下: Python网络编程实现如下功能: 1、服务器端能够同时为100个客户端提供服务; 2、服务器端使用数据库保存用户帐户、密码和email等信息; 3、服务器端提供FTP服务; 4、服务器端提供消息传递功能 5、客户端提供用户注册功能,登录功能,聊天功能,发送和接收email功能; 6、客户端提供用户间传递文件的功能; 7、客户端提供向服务器公共文件区上传下载文件的功能(全体用户可见); 8、客户端提供向服务器用户个人文件区上传下载文件的功能(只有用户个人可见);

python基于udp的网络聊天室报告_UDP-Python:如何使服务器在UDP聊天室中广播客户端发送的消息...

我用Python编写了一个使用UDP套接字的小型聊天室应用程序。我已经将它设置为用户选择用户名然后向服务器发送消息的位置。然后,服务器会将消息广播到每个连接的客户端。我设法让服务器正常工作,客户机能够向服务器发送消息。问题是服务器没有向连接的其他客户端广播消息。在以下是服务器代码:from socket import *import socketport = 1234localhost='127....

weixin_39628186的博客 232

huggingface 镜像站推荐

在做 Ai 应用开发或者学习的时候,我们经常需要下载各种模型,而 huggingface 的模型下载速度很慢或者根本就连不上,这里推荐一个 huggingface 的镜像站,速度很快,可以大大提高我们的效率。

t951984189的博客 1万+

C 基于UDP实现一个简易的聊天室

引言   本文是围绕Linux udp api 构建一个简易的多人聊天室.重点看思路,帮助我们加深 对udp开发中一些api了解.相对而言udp socket开发相比tcp socket开发注意的细节要少很多. 但是水也很深. 本文就当是一个demo整合帮助开发者回顾和继续了解 linux udp开发的基本流程. 首先我们来看看 linux udp 和 tcp的异同. /* 这里

three_bird的博客 8640

动态博弈、威胁与承诺(博弈论入门学习笔记四)

0 动态博弈 动态博弈:行动有先后顺序,不同的参与人在不同时点行动,先行动者的选择影响后行动者的选择空间,后行动者可以观察到先行动者做了什么选择。例如下棋、消费者和商家讨价还价、谈婚论嫁、企业之间的价格战等等。 因此,为了做出最优的行动选择,每个参与人都应该思考:如果我如此选择,对方将如何应对?如果我是他,我将会如何行动?给定他的应对,什么是我的最优选择? 动态博弈中的战略:在博弈开始之前就...

stepho的博客 1万+

警惕!数字签名伪造的攻防演练:用SigThief克隆证书的真实测试(Windows环境)

本文深入探讨了Windows环境下数字签名伪造的攻防技术,详细介绍了使用SigThief工具进行签名提取与克隆的实战步骤。通过真实测试案例,揭示了数字签名安全机制的潜在漏洞,并提供了有效的防御策略和检测技术,帮助安全人员提升系统防护能力。

weixin_42530732的博客 408

基于JAVA的udp编程实现简易聊天室

在网上看了几个udp编程的实例,都是实现简易聊天室,但是都存在一个问题,就是通信的一方不能实现连续的发送或者是连续的接受消息,因为发送消息,键盘的读入Scanner会导致阻塞,同理,接受消息的时候,socket.receive()方法也会导致阻塞。 基于这个原因,我们如果把通信中一方的发送功能和接受功能用同一个main线程实现,就只能按照,发一条,收一条,这个顺序聊天,如果想解决阻塞的缺点,只能用多线程来实现。 首先,将发送数据的功能封装成函数,形参列表分别为数据报套接字,目标IP,目标端口,代码如下:

qq_43128621的博客 915

从工业夹爪到Shadow Hand:一文看懂机器人灵巧手的硬件进化史(附避坑指南)

本文详细解析了机器人灵巧手从工业夹爪到Shadow Hand的硬件进化历程,涵盖刚性夹持器、自适应夹持器到多指灵巧手的技术突破。文章还提供了选购指南与技术避坑策略,帮助读者根据操作复杂度和环境结构化程度选择最适合的解决方案,适用于制造业、医疗和服务业等多个领域。

weixin_29074409的博客 483

UDP开发简易聊天室

UDP开发简易聊天室Socket开发步骤创建UDP服务端创建UDP客户端 Socket Socket是网络编程提供的一种机制,通信的两端都要有socket,网络通信其实就是socket间的通信,数据在两个socket的IO流上通信 开发步骤 创建UDP服务端 UPPServer public class UDPServer { public static void main(String[] args) { DatagramSocket ds=null; t

Java修炼者的博客 349

攻防世界:Crypto习题之easy_RSA

在非对称加密算法中,单向函数被广泛应用,用于确保从公钥加密后的密文无法轻易推导出私钥,从而保证数据的安全性。而其中最著名的算法便是 RSA 加密算法。首先设φm:=∣1≤k≤mgcdkm1∣为欧拉函数(Euler’sche Phi-function)。pqn:=pqpqφnnpqpqφnp−1q−1e∈12...φn−1gcdφne1ended≡1φn假设我们现在有明文x以及公钥en。

qq_52789488的博客 1570

炉石传说游戏系统拆解和部分系统分析

一.游戏综述 《炉石传说:魔兽英雄传》是一款由暴雪娱乐公司出品的策略类卡牌游戏。中国大陆地区的独家运营由网易公司代理。2014年3月13日全球同步正式运营。游戏背景设定于暴雪的魔兽系列,共十位魔兽中的角色作为十种不同的职业。而玩家要做的,就是根据己方现有的卡牌组建合适的卡组,指挥英雄,驱动随从,施展法术,与游戏好友或素不相识的对手一决高下。 二.游戏系统拆解图 三.游戏系统部分分析 1. 对战系统 (1)战斗准备 炉石传说开始前都需要配置至少30张卡牌作为出战卡组 .....

Jimmy72236的博客 4922

UDP 聊天室

import socket def send_msg(udp_socket): msg = input("\n请输入要发送的数据:") dest_addr = input("\请输入对方的ip地址:") dest_port = int(input("\n请输入对方的port:")) udp_socket.sendo(msg.encode('utf-8'),(de...

qq_41700865的博客 340

Adobe软件非正版弹窗终极解决方案:PS/Ai/PR/AE禁用提示一键清除指南

本文提供了Adobe软件非正版弹窗的终极解决方案,包括PS、Ai、PR、AE等软件的禁用提示一键清除指南。通过专业清理工具和手动修改系统文件的方法,帮助用户彻底解决Adobe弹窗问题,提升使用体验。适用于Windows和Mac系统用户,操作简单高效。

weixin_30872337的博客 5300

基于 TCP 与 UDP 的 Socket 聊天室

该系列博客衍生于我所参与的一个校企合作项目,作为该项目的一名成员,我无法公开项目的代码,文中出现的所有代码以及流程图均与原项目不同,包括代码的语言选择、通讯的流程图、通讯协议等。 原项目中的实现功能如下: 在 Linux 上使用 ROS 的收发机制来实现通讯模块与无人驾驶模块的数据传输; 在推耙机与中控室之间主要使用基于 TCP 协议的自定义数据帧的形式来进行数据传输,采用 Python 实现。 而本系列博客的最终需求是在两台不同主机之间使用基于 TCP 协议的自定义数据帧的形式来进行数据传输。代码采.

weixin_44262126的博客 2184

BUG调试案例六:RK3568+国产YT8531网络PING调试案例

这次调试过程让我对后续类似问题的应对更加有信心。如果芯片在其他项目中已被验证可用,那么在我们的设计中原则上也应该能够正常工作。如果出现异常,就必须坚持追根溯源,找出具体原因和根本问题。每一次问题的解决,都是一次深入理解系统和提升能力的机会 —— 在不断探索和学习中,也在持续成长。

案例文章,高速信号 2326

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java用UDP作简易聊天室

-------------------------------------------------java用UDP作简易聊天室---------------------------------------------------- /** * 服务端 * @author李昆鹏 * */        public   class UDPServer implements Runnable{    ...

李昆鹏的博客 4623

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 字典知识总结
下一篇: python进程和线程常用知识思维导图
愿不曾相遇
博客等级 码龄8年 3粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值