用socket模块实现全双工、多用户、多聊天室的聊天服务器和客户端

本文介绍如何使用Python的socket模块构建全双工、多用户、多聊天室的聊天服务器和客户端。服务器负责接收并转发数据,客户端连接服务器进行数据交互。为实现多聊天室,创建了多个绑定不同端口的服务器文件。此外,还添加了一个从服务器下载文件的功能,但由于某些限制,尚无法实现文件上传。总结来说,虽然套接字编程在现代已显过时,但它对于理解网络编程基础仍然有价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用socket模块

分别编写服务器文件和客户端文件

服务器负责接收来自客户端的

数据并转发给连接的其他客户端


接下来进行客户端的编写,客户端主要实现的功能:连接服务器套接字,进行数据输入和

数据接收

服务器作为中转站,其主要实现的功能有:建立能让客户端连接的套接字,接收客户端传入

的数据,将数据发送出去,代码如下:

from socket import *  
from time import ctime  
import select  

class Server():
	
	def __init__(self):
		self.HOST = '' #服务器的主机名,置空时接收任何局域网内的链接
		self.PORT = 21567 #端口号
		self.BUFSIZ = 1024  #缓冲区
		self.ADDR = (self.HOST,self.PORT)  
		
	def run_server(self):
		tcpSerSock = socket(AF_INET,SOCK_STREAM)#建立服务器套接字
		tcpSerSock.bind(self.ADDR) #将地址绑定到套接字上
		tcpSerSock.listen(5)#最大监听数
		input_cro = [tcpSerSock]#接收传入数据组 
		output_cro = [] #传出数据组
		message_queues = {} #绑定用户端口队列
		
		while input_cro:   
			readyInput,readyOutput,readyException=select.select(input_cro,output_cro,[]) 
			#每次循环都会阻塞在这里,只有当有数据输入时才会执行
	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值