python TCP 多线程收发信息

前言

很久没写博客了呢。这次是要用 python 实现一个简单的 TCP 客户端,在主线程中发送信息,然后子线程中接收信息,这样就不会因为 socket 接收信息的阻塞而影响速度了。

环境

  • win10 1909
  • python 3.7.5

程序实现

不说废话了,直接把程序贴上来吧~

import time
import socket
import threading

socket_flag = False
socket_msg = ""
clientSocket = None


def SocketReceive(clientSocket):
    ''' Socket 接收线程。'''
    global socket_flag, socket_msg  # 通过全局变量,让外部可以控制线程的运行,也可以处理信息
    while socket_flag:
        try:
            recvData = clientSocket.recv(64)
        except socket.timeout:  # 忽视掉超时
            continue
        if len(recvData) > 0
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用Pythonsocket模块来实现一个TCP多人聊天室。下面是一个简单的示例代码: ```python import socket import threading def handle_client(client_socket, address): while True: # 接收客户端发送的消息 data = client_socket.recv(1024).decode('utf-8') if not data: # 如果客户端断开连接,则退出循环 break print(f"收到来自{address}的消息:{data}") # 向所有客户端发送消息(广播) for client in clients: client.sendall(data.encode('utf-8')) # 关闭客户端连接 client_socket.close() def start_server(): # 创建套接字 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost', 8888)) server_socket.listen(5) print("服务器已启动,等待客户端连接...") while True: # 接受客户端连接请求 client_socket, address = server_socket.accept() print(f"客户端{address}已连接") # 创建新的线程处理客户端连接 client_thread = threading.Thread(target=handle_client, args=(client_socket, address)) client_thread.start() # 存储所有客户端套接字的列表 clients = [] start_server() ``` 这个示例代码使用了`socket`模块来创建服务器和客户端之间的TCP连接。服务器接受客户端连接请求后,为每个客户端创建一个新的线程,用于处理该客户端的消息收发。当有客户端发送消息时,服务器会将该消息广播给所有连接的客户端。 注意:这只是一个简单的示例,没有处理异常情况和安全性等问题。在实际应用中,可能需要进一步完善代码。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值