文件结构:
chatroom
├── client.py # 客户端代码
├── language.py # 语言文件
├── server.py # 服务端代码
└── settings.py # 设置文件
0 directories, 4 files
使用模块:
os
sys
socket
select
思路:
settings.py,定义HOST、PORT、ADDR、buffersize、language、curuser等变量。
server.py,服务器代码,使用select模块select方法实现IO多路复用监听sys.stdin输入以及客户端连接,实现与客户端通信,将从客户端接收到的信息群发给每个客户端。
client.py,客户端代码,同样使用IO多路复用同时监听客户端接收信息以及sys.stdin输入信息,实现与服务端的通信,间接实现与其他客户端的群聊。
language.py,语言文件,支持中文以及英语。
代码:
# settings.py
HOST = '0.0.0.0' # 主机名
PORT = 5555 # 端口号
buffersize = 1024 # 缓冲大小
ADDR = HOST, PORT # 地址
languages = ['cn', 'en'] # 'cn' -> 中文
language = 'cn' # 'en' -> 英文
curuser = '' # 当前用户
遇到python不懂的问题,可以加Python学习交流qun 688244617一起学习交流,还有零基础入门的学习资料和大量干货哦
# language.py
from settings import language
if language == 'en':
administrator = 'Administrator'
txt_administrator_close_chatroom = 'Chatroom closed by Administrator.'
txt_uesr_enter_chatroom = 'entered the chatroom.'
txt_user_quit_chatroom = 'quited the chatroom.'
txt_username = 'username> '
txt_user_already_exists = 'Username already exists!'
txt_connect_to = 'Connected to'
txt_connect_from = 'Connected from'
elif language == 'cn':
administrator = '管理员'
txt_administrator_close_chatroom = '管理员关闭了聊天室。'
txt_uesr_enter_chatroom = '进入了聊天室。'
txt_user_quit_chatroom = '退出了聊天室。'
txt_username = '用户名> '
txt_user_already_exists = '用户名已存在。'
txt_connect_to = '连接到'
txt_connect_from = '连接从'
# server.py
# 导入系统模块
import os, sys
# 导入网络编程(传输层)模块
from socket import *
# IO多路复用模块
from select import select