找回密码
 中文实名注册
搜索
查看: 136|回复: 0

服务器

[复制链接]

7

主题

1

回帖

201

积分

中级会员

积分
201
发表于 2025-7-25 16:32:58 | 显示全部楼层 |阅读模式
本帖最后由 李承键 于 2025-7-25 16:35 编辑

[C++] 纯文本查看 复制代码
import socket
import threading
import sys

def receive_messages(client_socket):
    """接收服务器发送的消息"""
    while True:
        try:
            message = client_socket.recv(4096).decode('utf-8')
            if message:
                print(message)
            else:
                break
        except:
            print("与服务器的连接已断开")
            client_socket.close()
            break

def send_messages(client_socket, nickname):
    """发送消息到服务器"""
    while True:
        try:
            message = input()
            if message.lower() == 'exit':
                client_socket.close()
                sys.exit(0)
            full_message = f'{nickname}: {message}'
            client_socket.send(full_message.encode('utf-8'))
        except:
            print("发送消息失败")
            client_socket.close()
            break

def start_client():
    """启动客户端"""
    # 服务器地址和端口
    HOST = input("请输入服务器IP地址 (默认: localhost): ") or 'localhost'
    PORT = 12345
    
    # 获取用户昵称
    nickname = input("请输入你的昵称: ")
    if not nickname:
        nickname = f"用户{socket.gethostname()}"
    
    # 连接服务器
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        client_socket.connect((HOST, PORT))
        print(f"已连接到 {HOST}:{PORT}")
    except:
        print(f"无法连接到服务器 {HOST}:{PORT}")
        return
    
    # 发送昵称到服务器
    client_socket.send(nickname.encode('utf-8'))
    
    # 启动接收消息线程
    receive_thread = threading.Thread(target=receive_messages, args=(client_socket,))
    receive_thread.start()
    
    # 启动发送消息线程
    send_thread = threading.Thread(target=send_messages, args=(client_socket, nickname))
    send_thread.start()

if __name__ == "__main__":
    print("聊天室客户端")
    print("输入 'exit' 退出聊天室")
    start_client()
    

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

快速回复 返回顶部 返回列表