用python寫一個聊天室程序

下面是一個簡單的基于Socket的Python聊天室程序示例,包括服務器端和客戶端:

服務器端代碼:

import socket
import threadingdef handle_client(client, address):print(f"New connection from {address}")while True:msg = client.recv(1024).decode()if not msg:breakprint(f"Received message: {msg}")broadcast(msg)client.close()def broadcast(msg):for client in clients:client.send(msg.encode())host = '127.0.0.1'
port = 5555server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((host, port))
server.listen()clients = []print("Server is running...")while True:client, address = server.accept()clients.append(client)thread = threading.Thread(target=handle_client, args=(client, address))thread.start()

客戶端代碼:

import socket
import threadingdef receive_messages():while True:msg = client.recv(1024).decode()print(msg)host = '127.0.0.1'
port = 5555client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((host, port))thread = threading.Thread(target=receive_messages)
thread.start()while True:msg = input()client.send(msg.encode())

要使用此聊天室程序,您需要在一個終端窗口中運行服務器端代碼,并在另一個終端窗口中運行客戶端代碼。

請注意,這只是一個簡單的示例,沒有進行錯誤處理和安全性檢查。在實際應用中,您可能需要添加更多功能以確保程序的穩定性和安全性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895593.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895593.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895593.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在nodejs中使用RabbitMQ(六)sharding消息分片

RabbitMQ 的分片插件(rabbitmq_sharding)允許將消息分布到多個隊列中,這在消息量很大或處理速度要求高的情況下非常有用。分片功能通過將消息拆分到多個隊列中來平衡負載,從而提升消息處理的吞吐量和可靠性。它能夠在多個隊列之間…

1.7 AI智能體實戰指南:從單任務自動化到企業級智能體集群架構

AI智能體實戰指南:從單任務自動化到企業級智能體集群架構 一、智能體技術演進:從腳本工具到認知革命的跨越 1.1 三代智能體能力對比 能力維度第一代(規則驅動)第二代(機器學習)第三代(LLM驅動)任務理解固定模式匹配統計模式識別語義推理與邏輯鏈分解環境適應需人工重寫…

Github 2025-02-14 Java開源項目日報 Top10

根據Github Trendings的統計,今日(2025-02-14統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Java項目10C#項目1Guava: 谷歌Java核心庫 創建周期:3725 天開發語言:Java協議類型:Apache License 2.0Star數量:49867 個Fork數量:10822 次…

C++17中的clamp函數

一、std::clamp() 其實在前面簡單介紹過這個函數&#xff0c;但當時只是一個集中的說明&#xff0c;為了更好的理解std::clamp的應用&#xff0c;本篇再詳細進行闡述一次。std::clamp在C17中其定義的方式為&#xff1a; template< class T > constexpr const T& cl…

WEB安全--SQL注入--常見的注入手段

一、聯表查詢&#xff1a; 1.1原理&#xff1a; 當payload參數被后端查詢語句接收到時&#xff0c;其中的非法語句通過union關聯顯示出其他的數據 1.2示例&#xff1a; #payload: -1 and union select 1,2,database()--#query: $sqlselect * from users where id-1 and union …

QT筆記——QPlainTextEdit

文章目錄 1、概要2、文本設計2.1、設置文本2.1、字體樣式&#xff08;大小、下劃線、加粗、斜體&#xff09; 1、概要 QPlainTextEdit 是 Qt 框架中用于處理純文本編輯的控件&#xff0c;具有輕量級和高效的特點&#xff0c;以下是它常見的應用場景&#xff1a; 文本編輯器&am…

【D2】神經網絡初步學習

總結&#xff1a;學習了 PyTorch 中的基本概念和常用功能&#xff0c;張量&#xff08;Tensor&#xff09;的操作、自動微分&#xff08;Autograd&#xff09;、正向傳播、反向傳播。通過了解認識LeNet 模型&#xff0c;定義神經網絡類&#xff0c;熟悉卷積神經網絡的基本結構和…

DeepSeek處理自有業務的案例:讓AI給你寫一份小眾編輯器(EverEdit)的語法著色文件

1 DeepSeek處理自有業務的案例&#xff1a;讓AI給你寫一份小眾編輯器(EverEdit)的語法著色文件 1.1 背景 AI能力再強&#xff0c;如果不能在企業的自有業務上產生助益&#xff0c;那基本也是一無是處。將企業的自有業務上傳到線上訓練&#xff0c;那是腦子進水的做法&#xff…

DeepSeek教unity------MessagePack-05

動態反序列化 當調用 MessagePackSerializer.Deserialize<object> 或 MessagePackSerializer.Deserialize<dynamic> 時&#xff0c;二進制數據中存在的任何值都將被轉換為基本值&#xff0c;即 bool、char、sbyte、byte、short、int、long、ushort、uint、ulong、…

C++入門之《拷貝構造函數》詳解

拷貝構造函數是構造函數的一個重載 拷貝構造函數是特殊的構造函數&#xff0c;用于基于已存在對象創建新對象。比如定義一個 Person 類&#xff1a; class Person { private:std::string name;int age; public:Person(const std::string& n, int a) : name(n), age(a…

Ollama命令使用指南

Ollama 命令使用指南 Ollama 命令使用指南1. Ollama 命令概覽2. Ollama 命令詳解2.1 啟動 Ollama2.2 創建模型2.3 查看模型信息2.4 運行模型2.5 停止運行的模型2.6 從注冊表拉取模型2.7 推送模型到注冊表2.8 列出本地模型2.9 查看正在運行的模型2.10 復制模型2.11 刪除模型 3. …

為什么配置Redis時候要序列化配置呢

序列化和反序列化&#xff1f;&#xff1a; 序列化&#xff1a;將對象轉換為二進制數據&#xff0c;以便存儲到Redis中。 反序列化&#xff1a;將Redis中的二進制數據轉換回對象&#xff0c;以便在應用程序中使用。 1. 默認序列化器的問題 如果不配置序列化器&#xff0c;Re…

【問】強學如何支持 遷移學習呢?

案例&#xff1a;從CartPole-v1遷移到MountainCar-v0 在源環境&#xff08;CartPole-v1&#xff09;中訓練模型 首先&#xff0c;我們使用DQN算法在CartPole-v1環境中訓練一個強化學習模型。以下是代碼示例&#xff1a; import gym import torch import torch.nn as nn impor…

深入淺出Java反射:掌握動態編程的藝術

小程一言反射何為反射反射核心類反射的基本使用獲取Class對象創建對象調用方法訪問字段 示例程序應用場景優缺點分析優點缺點 注意 再深入一些反射與泛型反射與注解反射與動態代理反射與類加載器 結語 小程一言 本專欄是對Java知識點的總結。在學習Java的過程中&#xff0c;學習…

【算法與數據結構】并查集詳解+題目

目錄 一&#xff0c;什么是并查集 二&#xff0c;并查集的結構 三&#xff0c;并查集的代碼實現 1&#xff0c;并查集的大致結構和初始化 2&#xff0c;find操作 3&#xff0c;Union操作 4&#xff0c;優化 小結&#xff1a; 四&#xff0c;并查集的應用場景 省份…

C語言簡單練習題

文章目錄 練習題一、計算n的階乘bool類型 二、計算1!2!3!...10!三、計算數組arr中的元素個數二分法查找 四、動態打印字符Sleep()ms延時函數system("cls")清屏函數 五、模擬用戶登錄strcmp()函數 六、猜數字小游戲產生一個隨機數randsrandRAND_MAX時間戳time() 示例 …

ShenNiusModularity項目源碼學習(8:數據庫操作)

ShenNiusModularity項目使用SqlSugar操作數據庫。在ShenNius.Repository項目中定義了ServiceCollectionExtensions.AddSqlsugarSetup函數注冊SqlSugar服務&#xff0c;并在ShenNius.Admin.API項目的ShenniusAdminApiModule.OnConfigureServices函數中調用&#xff0c;SqlSugar所…

MATLAB圖像處理:圖像特征概念及提取方法HOG、SIFT

圖像特征是計算機視覺中用于描述圖像內容的關鍵信息&#xff0c;其提取質量直接影響后續的目標檢測、分類和匹配等任務性能。本文將系統解析 全局與局部特征的核心概念&#xff0c;深入講解 HOG&#xff08;方向梯度直方圖&#xff09;與SIFT&#xff08;尺度不變特征變換&…

java枚舉類型的查找

AllArgsConstructor Getter public enum FileFilterRangeEnum {FILE_NAME("文件名稱","fileName"),FILE_CONTENT("文件內容","fileContent");private final String text;private final String value;// 根據傳入的字符串值查找對應的枚…

小白win10安裝并配置yt-dlp

需要yt-dlp和ffmpeg 注意存放路徑最好都是全英文 win10安裝并配置yt-dlp 一、下載1.下載yt-dlp2. fffmpeg下載 二、配置環境三、cmd操作四、yt-dlp下視頻操作 一、下載 1.下載yt-dlp yt-dlp地址 找到win的壓縮包點下載&#xff0c;并解壓 2. fffmpeg下載 ffmpeg官方下載 …