如何将数据接收到线程中?

问题描述

这是我的代码,用于从客户端VMware(或笔记本电脑)接收数据。 它处理接收到的图像数据,并将结果值发送回客户端。它只适用于少数几个客户,因为它一次只交易一个。因此,我想修改代码以接收数据并使用独立的线程处理数据,每个线程一个专用线程。

但是问题是线程和主进程似乎共享相同的东西。我为线程和主进程分配了不同的端口号,但是当主进程与客户机连接时,线程不能接受来自客户机的连接,而当线程与客户机连接时,主进程也不能接受连接。 它们不仅不能接受连接,而且共享相同的队列,这会使recv(16)和recv(1024)函数出错。

我最终想要的是,我的主进程不执行任何操作或执行其他操作(通信除外),只有线程与客户端通信一起工作。

import socket
serverSock = socket.socket(socket.AF_INET,socket.soCK_STREAM)
serverSock.bind(("",someport_no))
serverSock.listen(3)

count = 0
while 1:
    print("Waiting for connection ...")
    client,addr = serverSock.accept()
    print("Connection established")

    recvData = client.recv(16) #Receives file size
    fileSize = int().from_bytes(recvData,"little") #Decoding file size
    print("The file size : ",fileSize)
    totalRecv = bytes() #Convert totalRecv variable's data type to bytes object
    recvCount = bytes()
    while True:
        recvData = client.recv(1024)# Puts the data received from the client 1024kb each.
        totalRecv += recvData # Stacks received data into totalRecv
        if len(totalRecv) == fileSize:#Ends receiving when the size matches.
            break
    with open(dir + "rune_client.png","wb") as f:
        f.write(totalRecv)
    # client,addr = serverSock.accept()
    print("Image analizing...")
    first = time.perf_counter()
    result = detects() # processes the image
    client.send(result.encode("utf-8"))
    second = time.perf_counter()
    print('Detect time : ',second - first)
    count += 1
    print('Server access count : ',count)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)