python中協(xié)程實(shí)現(xiàn)TCP連接的實(shí)例分析
在網(wǎng)絡(luò)通信中,每個(gè)連接都必須創(chuàng)建新線程(或進(jìn)程) 來處理,否則,單線程在處理連接的過程中, 無法接受其他客戶端的連接。所以我們嘗試使用協(xié)程來實(shí)現(xiàn)服務(wù)器對(duì)多個(gè)客戶端的響應(yīng)。
與單一TCP通信的構(gòu)架一樣,只是使用協(xié)程來實(shí)現(xiàn)多個(gè)任務(wù)同時(shí)進(jìn)行。
#服務(wù)端
import socket
from gevent import monkey
import gevent
monkey.patch_all()
def handle_conn(seObj):
while True:
re_Data = seObj.recv(1024).decode('utf-8')
if re_Data == 'quit':
break
print('client>>',re_Data)
value = input("server>>")
se_Data = seObj.send(value.encode('utf-8'))
if se_Data == 'quit':
break
if __name__ == '__main__':
server = socket.socket()
server.bind(('192.168.1.227',9876))
print("服務(wù)已開啟")
server.listen(4)
while True:
seObj,add = server.accept()
gevent.spawn(handle_conn,seObj)
seObj.close()
server.close()
import socket
# 1. 創(chuàng)建客戶端的socket對(duì)象
client = socket.socket()
# 2. 連接服務(wù)端, 需要指定端口和IP
client.connect(('192.168.1.227',9876))
while True:
# 3. 給服務(wù)端發(fā)送數(shù)據(jù)
send_data = input("client:>")
client.send(send_data.encode('utf-8'))
if send_data == 'quit':
break
# 4. 獲取服務(wù)端返回的消息
recv_data = client.recv(1024).decode('utf-8')
if recv_data == 'quit':
break
print("server:>%s" %(recv_data))
# 5. 關(guān)閉socket連接
client.close()
以上就是python中協(xié)程實(shí)現(xiàn)TCP連接的代碼示例的詳細(xì)內(nèi)容,感謝大家對(duì)腳本之家的支持。
相關(guān)文章
python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)(五)支持向量機(jī)
這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)第五篇,支持向量機(jī)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Python中用psycopg2模塊操作PostgreSQL方法
python可以操作多種數(shù)據(jù)庫,本篇文章給大家介紹了用psycopg2模塊操作PostgreSQL方法,一起來學(xué)習(xí)下。2017-11-11
將本地Python項(xiàng)目打包成docker鏡像上傳到服務(wù)器并在docker中運(yùn)行
Docker是一個(gè)開源項(xiàng)目,為開發(fā)人員和系統(tǒng)管理員提供了一個(gè)開放平臺(tái),可以將應(yīng)用程序構(gòu)建、打包為一個(gè)輕量級(jí)容器,并在任何地方運(yùn)行,這篇文章主要給大家介紹了關(guān)于將本地Python項(xiàng)目打包成docker鏡像上傳到服務(wù)器并在docker中運(yùn)行的相關(guān)資料,需要的朋友可以參考下2023-12-12
Django 解決distinct無法去除重復(fù)數(shù)據(jù)的問題
這篇文章主要介紹了Django 解決distinct無法去除重復(fù)數(shù)據(jù)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05
利用python對(duì)excel中一列的時(shí)間數(shù)據(jù)更改格式操作
這篇文章主要介紹了利用python對(duì)excel中一列的時(shí)間數(shù)據(jù)更改格式操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
pygame游戲之旅 調(diào)用按鈕實(shí)現(xiàn)游戲開始功能
這篇文章主要為大家詳細(xì)介紹了pygame游戲之旅的第12篇,教大家調(diào)用按鈕實(shí)現(xiàn)游戲開始功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11

