当前位置: 首页 > news >正文

用python写一个聊天室程序

下面是一个简单的基于Socket的Python聊天室程序示例,包括服务器端和客户端:

服务器端代码:

import socket
import threading

def handle_client(client, address):
    print(f"New connection from {address}")
    while True:
        msg = client.recv(1024).decode()
        if not msg:
            break
        print(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 = 5555

server = 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 threading

def receive_messages():
    while True:
        msg = client.recv(1024).decode()
        print(msg)

host = '127.0.0.1'
port = 5555

client = 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.dtcms.com/a/17672.html

相关文章:

  • 【二分搜索 C/C++】洛谷P1024 一元三次方程求解
  • 【deepseek 部署中的常见问题及解决方案--亲测有效】
  • 机器视觉中的3d和2d的区别
  • Unity实现UI拖拽
  • 《深度LSTM vs 普通LSTM:训练与效果的深度剖析》
  • 在 UniApp 中封装并连接 WebSocket 及重连机制实现
  • AcWing 798. 差分矩阵
  • 华为小艺支持DeepSeek
  • Python教学-最常用的标准库之一——OS库
  • golang基础库
  • 【SpringBoot苍穹外卖】debugDay03.5
  • Java 设计模式之备忘录模式
  • 2.11学习
  • Unity 命令行设置运行在指定的显卡上
  • Hyper-V管理器连接服务器提示你没有完成此任务所需的权限
  • 日常故障排查 - Linux常用命令
  • C++ 中的继承与派生
  • Windchill 成套的解决方案
  • Linux Mem -- ARM8.5-A Memory Tagging Extension
  • 人工智能大模型技术剖析:分类、对比与性能洞察
  • 【情感识别】SECap: Speech Emotion Captioning with Large Language Model 论文阅读
  • 逻辑回归不能解决非线性问题,而svm可以解决
  • 【prompt实战】旅行攻略顾问
  • 二、k8s项目的生命周期
  • 闭源大语言模型的怎么增强:提示工程 检索增强生成 智能体
  • hot100_101. 对称二叉树
  • 国家队出手!DeepSeek上线国家超算互联网平台!
  • 使用docker compose启动postgres并设置时区
  • 力扣100. 相同的树(利用分解思想解决)
  • 相机与激光雷达联合标定综述