多人在线聊天系统免费源码下载-聊天软件

import socket
import threading
import queue
import json
 
 
class Server(threading.Thread):
    def __init__(self, port):
        threading.Thread.__init__(self)
        self.address = ('', port)
        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
    def recv_(self, data, addr):
        lock.acquire()
        try:
            que.put((addr, data))
        finally:
            lock.release()
 
    def send_data(self):
        while True:
            if not que.empty():
                data = ''
                message = que.get()
                if isinstance(message[1], str):
                    for i in range(len(users)):
                        for j in range(len(users)):
                            if message[0] == users[j][2]:
                                data = f'{users[j][1]}:{message[1]}'
                                break
                        users[i][0].send(data.encode())
 
                if isinstance(message[1], list):
                    data = json.dumps(message[1])
                    for i in range(len(users)):
                        try:
                            users[i][0].send(data.encode())
                        except: pass
 
    def tcp_connect(self, conn, addr):
        users.append((conn, conn.recv(1024).decode(), addr))
        self.recv_([users[i][1] for i in range(len(users))], addr)
        try:
            while True:
                self.recv_(conn.recv(1024).decode(), addr)
        except:
            a = 0
            for i in users:
                if i[0] == conn:
                    users.pop(a)
                    self.recv_([users[i][1] for i in range(len(users))], addr)
                    break
                a += 1
            conn.close()
 
    def run(self):
        self.s.bind(self.address)
        self.s.listen(5)
        threading.Thread(target=self.send_data).start()
        while True:
            conn, addr = self.s.accept()
            threading.Thread(target=self.tcp_connect, args=(conn, addr)).start()
 
 
users = []
que = queue.Queue()
lock = threading.Lock()
Server(1224).start()

可以自己用源码搭建,也可以下载文件用现成的。

图片[1]-多人在线聊天系统免费源码下载-聊天软件
------本页内容已结束,喜欢请分享------
温馨提示:由于项目或工具都有失效性,如遇到不能做的项目或不能使用的工具,可以根据关键词在站点搜索相关内容,查看最近更新的或者在网页底部给我们留言反馈。
多人在线聊天系统免费源码下载-聊天软件-资源网站
多人在线聊天系统免费源码下载-聊天软件
此内容为免费资源,请登录后查看
0
免费资源
© 版权声明
THE END
喜欢就支持一下吧
点赞1170 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容