python多線程實(shí)現(xiàn)TCP服務(wù)端
本文實(shí)例為大家分享了python多線程實(shí)現(xiàn)TCP服務(wù)端的具體代碼,供大家參考,具體內(nèi)容如下
需求
1.創(chuàng)建一個(gè)TCP服務(wù)器接收服務(wù)端發(fā)送的信息并給予答復(fù)
2.以多線程方式實(shí)現(xiàn)接收客戶端信息
3.間客戶端發(fā)送的信息解碼輸出
思路分析
1.創(chuàng)建一個(gè)TCP客戶端套接字
2.寫一個(gè)接收消息的方法,可以接收客戶端消息并解碼輸出
3.客戶端被動(dòng)監(jiān)聽,每有一個(gè)客戶端連接就創(chuàng)建一個(gè)子線程執(zhí)行接收消息方法
代碼實(shí)現(xiàn)
# 導(dǎo)入模塊
import socket
import threading
# 接收消息
def recv(client_socket, ip_port):
while True:
client_text = client_socket.recv(1024)
# 如果接收的消息長(zhǎng)度不為0,則將其解碼輸出
if client_text:
print("[客戶端消息]", ip_port, ":", client_text.decode("gbk"))
# 給客戶端響應(yīng)
client_socket.send("收到\n".encode())
# 當(dāng)客戶端斷開連接時(shí),會(huì)一直發(fā)送''空字符串,所以長(zhǎng)度為0已下線
else:
print("客戶端", ip_port, "已下線")
client_socket.close()
break
# 程序主入口
def main():
# 創(chuàng)建TCP套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 設(shè)置端口復(fù)用
tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# 綁定端口
tcp_socket.bind(("", 8080))
# 設(shè)置為被動(dòng)監(jiān)聽狀態(tài),128表示最大連接數(shù)
tcp_socket.listen(128)
while True:
# 等待客戶端連接
client_socket, ip_port = tcp_socket.accept()
print("[新客戶端]:", ip_port, "已連接")
# 有客戶端連接后,創(chuàng)建一個(gè)線程將客戶端套接字,IP端口傳入recv函數(shù),
t1 = threading.Thread(target=recv, args=(client_socket, ip_port))
# 設(shè)置線程守護(hù)
t1.setDaemon(True)
# 啟動(dòng)線程
t1.start()
if __name__ == '__main__':
main()
執(zhí)行結(jié)果
接收客戶端消息
響應(yīng)客戶端消息
客戶端下線后識(shí)別

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python3 socket即時(shí)通訊腳本實(shí)現(xiàn)代碼實(shí)例(threading多線程)
- python使用多線程+socket實(shí)現(xiàn)端口掃描
- 解決python ThreadPoolExecutor 線程池中的異常捕獲問(wèn)題
- 解決python多線程報(bào)錯(cuò):AttributeError: Can''t pickle local object問(wèn)題
- python實(shí)現(xiàn)自動(dòng)化報(bào)表功能(Oracle/plsql/Excel/多線程)
- Python實(shí)現(xiàn)多線程/多進(jìn)程的TCP服務(wù)器
- python使用多線程編寫tcp客戶端程序
- Python3多線程版TCP端口掃描器
- python單線程下實(shí)現(xiàn)多個(gè)socket并發(fā)過(guò)程詳解
- 詳解C語(yǔ)言和Python中的線程混用
相關(guān)文章
Python 含參構(gòu)造函數(shù)實(shí)例詳解
這篇文章主要介紹了Python 含參構(gòu)造函數(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05
Python實(shí)現(xiàn)有趣的親戚關(guān)系計(jì)算器
每年的春節(jié),都會(huì)有一些自己幾乎沒(méi)印象但父母就是很熟的親戚,關(guān)系凌亂到你自己都說(shuō)不清。本文就來(lái)用Python制作一個(gè)有趣的親戚關(guān)系計(jì)算器,感興趣的可以了解一下2023-01-01
python 通過(guò)類中一個(gè)方法獲取另一個(gè)方法變量的實(shí)例
今天小編就為大家分享一篇python 通過(guò)類中一個(gè)方法獲取另一個(gè)方法變量的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
詳解Python 調(diào)用C# dll庫(kù)最簡(jiǎn)方法
這篇文章主要介紹了詳解Python 調(diào)用C# dll庫(kù)最簡(jiǎn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Python實(shí)現(xiàn)格式化輸出的實(shí)例詳解
這篇文章主要為大家介紹了Python語(yǔ)法中實(shí)現(xiàn)格式化輸出的方法,本文通過(guò)幾個(gè)實(shí)例為大家進(jìn)行了詳細(xì)的講解,感興趣的小伙伴可以了解一下2022-08-08
基于tensorflow __init__、build 和call的使用小結(jié)
這篇文章主要介紹了基于tensorflow __init__、build 和call的使用小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02

