- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章python聊天室(虽然很简洁,但是可以用)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
。
很多人都觉得微信,QQ,ICQ(我不知道现在还能不能用了)都过于垃圾,想要自己做一个聊天室(或是聊天软件),所以我们可以自己做一个.
想要做出聊天室(或是聊天软件),我们就需要搞清楚它们的原理,这里我们用一个图片 。
来给你们看 。
我们可以看到,服务端其实就只是起到了一个转发消息的原理,搞清楚原理,就开始做 。
。
import socket,threading #导入文件def shou(new_s,socket_list):#创建一个收的函数 try: nikename = new_s.recv(1024).decode("utf-8").strip()#为当前客户端执行一次‘收"来获取 except: new_s.close()#关闭当前客户端的套接字 socket_list.remove(new_s)#去除套接字列表里的nes_s for i in socket_list: i.send("公告:一个未知的人离开了聊天室......".encode("utf-8"))#广播 return None for i in socket_list: i.send(f"公告:欢迎{nikename}进入了聊天室........".encode("utf-8"))#广播 while 1: try: recv_data = new_s.recv(1024).decode("utf-8")#如果接受到了客户端发来的信息 print(recv_data)#仅作提醒用 for i in socket_list: i.send(f"{nikename}:{recv_data}".encode("utf-8"))#广播 except: new_s.close()#关闭当前客户端的套接字 socket_list.remove(new_s)#去除套接字列表里的nes_s for i in socket_list: i.send(f"公告:{nikename}离开了聊天室......".encode("utf-8"))#广播 break#跳出循环def fa(new_s): while 1: msg = input("")#发出 new_s.send(msg.encode("utf-8"))#创建套接字s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#绑定s.bind(("",5678))#端口#监听s.listen(5)print("服务端处于监听状态,等待客户端接入..........")socket_list = []while 1: #接入 new_s,addr = s.accept() print("客户端已接入") socket_list.append(new_s) new_s.send("请输入昵称:".encode("utf-8")) t1 = threading.Thread(target=shou,args=(new_s,socket_list)) t2 = threading.Thread(target=fa,args=(new_s,)) t1.start() t2.start()# new_s.close()# s.close()
。
怎么样,服务端是不是很简单?接下来我们做客户端 。
import socket,threadingimport tkinter as tk#创建套接字a = 1s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(("127.0.0.1",5678))#此处端口看服务端的端口,127.0.0.1要改成服务端主机的ipv4地址print("已链接服务端,通讯加密中")def shou(s,msg_texe): recv_data = s.recv(1024).decode("utf-8") msg_text.insert(tk.END, recv_data) while 1: recv_data = s.recv(1024).decode("utf-8") msg_text.insert(tk.END,recv_data)def fa(): global a if a == 0: msg = input_text.get("0.0",tk.END) s.send(msg.encode("utf-8")) input_text.delete("0.0",tk.END) else: msg = input_text.get("0.0", tk.END) s.send(msg.encode("utf-8")) input_text.delete("0.0", tk.END) msg_text.delete("0.0", tk.END) a = 0app = tk.Tk()app.title("聊天室")#显示消息框msg_frame = tk.Frame(app,width=480,height=300)msg_frame.grid(row=0,column=0,padx=6,pady=6)msg_frame.grid_propagate(0)#固定Frame的大小msg_text = tk.Text(msg_frame,bg="white")msg_text.grid()# msg_text.insert("0.0","hhh")#输入input_frame = tk.Frame(app,width=480,height=100)input_frame.grid(row=1,column=0)input_frame.grid_propagate(0)input_text = tk.Text(input_frame,bg="white")input_text.grid()#发送按钮btn_frame = tk.Frame(app,width=480,height=20)btn_frame.grid(row=2,column=0,sticky="E")button = tk.Button(btn_frame,text="发送",command=fa)button.grid()#线程t1 = threading.Thread(target=shou,args=(s,msg_text))t1.daemon = Truet1.start()app.mainloop()#s.close()
伸手党下载链接:https://pan.baidu.com/s/1KD6p_a2KgFxbOVN5yftQRw 。
提取码:2iwk 。
。
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我的更多内容! 。
原文链接:https://blog.csdn.net/wangziwenhk/article/details/119810028 。
最后此篇关于python聊天室(虽然很简洁,但是可以用)的文章就讲到这里了,如果你想了解更多关于python聊天室(虽然很简洁,但是可以用)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有聊天应用程序,可以一对一发送消息(fromId/toId)。我想升级它的聊天室。我怎样才能做到这一点? ChatingRoom 需要什么数据库结构?我还需要做什么? 我的 User.swift 模
本文实例讲述了python socket多线程通讯方法。分享给大家供大家参考,具体如下: ?
我正在使用简单的套接字连接创建一个聊天室。我有一个服务器和客户端程序。服务器在端口 225 上运行,然后当我在端口 225 上运行客户端以便它们可以读/写套接字时,客户端立即停止并显示错误消息 jav
我可以创建一个粘液室。但是如果我将房间名称指定为数据库中现有的房间名称,服务器会拒绝它。那么是否可以在 ejabberd 服务器(MYSQl 后端)中创建两个具有相同名称的房间? 如果可能的话,后果是
我正在尝试使用 PHP 创建一个聊天室(顺便说一句,它正在工作),但只显示消息,而不显示他们的用户名。我已经为他们创建了数据库、用户名和消息。我不知道为什么他们的用户名没有显示 ".$extract[
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我想在我的应用程序中实现群聊,为此我正在使用 MUC 聊天室来实现它。 在这里,我想向房间添加一个成员列表(我有 JID)。我想在内部将它们添加到列表中的所有成员。我如何在不邀请他们的情况下添加他们。
我正在尝试在 Rails 中创建类似 Whatsapp 的消息应用程序服务器端,并进行私有(private)对话。现在,我正在尝试实现应用程序的实时部分 - 我正在使用 websocket-rails
我正在尝试为我的网站制作一个 PHP/JavaScript 聊天系统。如何在不刷新页面的情况下做到这一点? JavaScript 可以:--动态添加文本到文本框。 PHP 可以:--将聊天内容保存到聊
我已经为多个客户端完全开发了一个聊天室,其多线程服务器可以完成这项工作,但仅限于我的本地计算机。我想超越这个,让这个聊天室通过互联网工作。到目前为止,我已经在路由器上对 TCP 协议(protocol
我是 Angular 的初学者,我正在尝试构建一个聊天室应用程序,以此自学如何在该框架中进行开发。 我在后端使用 PHP 和 Yii 将 RESTful 数据发送回 Angular 应用程序。我知道我
我正在寻找好的建议来制作这个聊天室: 使用 Java Swing。我已经尝试了所有 java swing 组件 3 天,但我仍然不知道该选择什么。 容器还必须插入 JprogressBars 以进行文
嗨,我正在努力让两件事同时工作...... channels2 chat room例子可以开始,但我想添加一个功能,知道房间里有多少人。我通过更新房间模型来做到这一点。 然后我想要一个仪表板来显示当前
我正在编写一个需要持久存储对话的多聊天室应用程序(即新用户应该能够看到旧消息)。如果有帮助,我正在使用 socket.io。 目前,当用户登录到一个房间时,我的 Node 应用程序会检查是否有人去过那
我试图扩展doc中关于TCP的代码来制作一个简单的聊天室,简单地说,几个客户端连接到服务器,一个客户端发送一个字符串,服务器将字符串广播给所有客户端......我写的代码显示下面,它不起作用,有人可以
如何在 Microsoft-Teams 中自动向聊天室发布消息?这是用于单向消息传递:即发布消息,而不是阅读消息。 这里的大局是我们正在评估不同的群聊解决方案,其中一项要求是从各种服务和程序向聊天室发
我创建了一个小型的 jquery 和 php 聊天室,其中包含一些 .get 和 .post 函数以及用于将数据读写到 sql server 的 php 文档。它工作正常,但小问题是当有人发布一些东西
我想实现的是自动下载附件功能,无需进入 ChatRoom,使用 QuickBlox SDK iOS 版本 2.0.12, 为此,我想在登录后启动用户所属的所有对话框(聊天室)。 使用当前的 API,用
所以我有聊天室工作所以如果收件人是 All 或 ALL 它广播我有这个工作所以如果你的名字是'Sam'它发送它与“私有(private)消息:”文本我不知道如何检查用户名的花名册并将其私下发送给该用户
我正在尝试创建基于移动设备的聊天应用。 基本上,我希望用户使用他们的 Facebook 帐户连接到 Facebook(使用 XMPPFramework) 我想要预先存在的房间供用户加入。我注意到 XM
我是一名优秀的程序员,十分优秀!