当前位置: 首页 > 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())

要使用此聊天室程序,您需要在一个终端窗口中运行服务器端代码,并在另一个终端窗口中运行客户端代码。

请注意,这只是一个简单的示例,没有进行错误处理和安全性检查。在实际应用中,您可能需要添加更多功能以确保程序的稳定性和安全性。

相关文章:

  • 【二分搜索 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
  • 人工智能大模型技术剖析:分类、对比与性能洞察
  • 高培勇:中国资本市场的发展应将预期因素全面纳入分析和监测体系
  • 巴基斯坦称成功拦截印度导弹,空军所有资产安全
  • 上报集团社长李芸:发挥媒体优势,让中非民心在数字时代更深层互联互通
  • 国防部:奉劝有关国家不要引狼入室,甘当棋子
  • 深入贯彻中央八项规定精神学习教育中央第六指导组指导督导中国工商银行见面会召开
  • 李公明︱一周书记:浪漫主义为什么……仍然重要?