import socket
import threading
import queue
# 創(chuàng)建一個(gè)隊(duì)列用于存放接收到的數(shù)據(jù)
data_queue = queue.Queue(maxsize=0)
# 定義TCP服務(wù)器的IP地址和端口號(hào)
HOST = '127.0.0.1'
PORT = 8888
# 創(chuàng)建一個(gè)TCP服務(wù)器套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 綁定服務(wù)器的IP地址和端口號(hào)
server_socket.bind((HOST, PORT))
# 開(kāi)始監(jiān)聽(tīng)客戶端連接請(qǐng)求
server_socket.listen(1)
def handle_client(client_socket):
"""處理客戶端請(qǐng)求的函數(shù)"""
while True:
# 接收客戶端發(fā)送的數(shù)據(jù)
data = client_socket.recv(1024)
if not data:
break
# 將接收到的數(shù)據(jù)放入隊(duì)列中
data_queue.put(data)
# 關(guān)閉客戶端套接字
client_socket.close()
def main():
"""主函數(shù)"""
while True:
# 等待客戶端連接請(qǐng)求
client_socket, address = server_socket.accept()
# 創(chuàng)建一個(gè)線程處理客戶端請(qǐng)求
t = threading.Thread(target=handle_client, args=(client_socket,))
t.start()
# 關(guān)閉服務(wù)器套接字
server_socket.close()
if __name__ == '__main__':
main()
????????在上面的程序中,我們創(chuàng)建了一個(gè)隊(duì)列data_queue
來(lái)存放接收到的數(shù)據(jù),并使用Python的socket模塊創(chuàng)建了一個(gè)TCP服務(wù)器套接字server_socket
。當(dāng)有客戶端連接請(qǐng)求時(shí),程序會(huì)創(chuàng)建一個(gè)新線程來(lái)處理客戶端請(qǐng)求,并在處理函數(shù)handle_client
中將接收到的數(shù)據(jù)放入隊(duì)列中。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-642254.html
????????在實(shí)際應(yīng)用中,我們可以創(chuàng)建多個(gè)線程從隊(duì)列中讀取數(shù)據(jù)并進(jìn)行相應(yīng)的處理。例如,我們可以創(chuàng)建一個(gè)數(shù)據(jù)處理線程,從隊(duì)列中讀取數(shù)據(jù)并進(jìn)行數(shù)據(jù)解析、存儲(chǔ)等操作。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-642254.html
到了這里,關(guān)于利用python進(jìn)行TCP通信接收數(shù)據(jù)進(jìn)行處理,使用隊(duì)列來(lái)存放接收的數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!