python+socket实现多用户连接

socket 实现多用户连接(肯定要用到线程啊,不会的学一下吧):

我就是为那些和我一样的菜鸟提供一下写的时候的思路,免得和我这个笨蛋一样浪费了一上午

import socket as sk
from threading import Thread	

sever_socket = sk.socket(sk.AF_INET, sk.SOCK_STREAM)
sever_socket.bind(("10.28.62.212", 8083))
sever_socket.listen(4000)
print("已将启动监听")
users_socket = []  # 用来保存与用户链接的套接字
# --------------------------启动服务端-----------------------------------------------------------------------------------


def one_user_communicate(socket):
    recv_image = socket.recv(1024)
    recv_image = recv_image.decode("gbk")
    print(recv_image)

    send_image = "sss"
    send_image = send_image.encode("gbk")
    socket.send(send_image)


def threading_communicate():
    global users_socket  # 便于连接一次立即删除
    while True:
        # 为了避免下一轮的user_socket与本轮的user_socket 重复,即为一个用户链接了两回,要在每一个线程的最后删去user_socket
        for i in users_socket:
            threading_user_socket = Thread(target=one_user_communicate, args=(i,))
            threading_user_socket.start()
            users_socket.remove(i)  # 线程已经启动,删除也不影响.


threading_users_socket = Thread(target=threading_communicate)

if __name__ == "__main__":
    threading_users_socket.start()  # 定义多用户如何链接

    # ---------------------------------------------------------------------用来保存用户对话的一个线程----------------------

    while True:
        user_socket, user_address = sever_socket.accept()
        users_socket.append(user_socket)
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值