最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

python多線程socket編程中將多客戶端接入的方法

來源:懂視網(wǎng) 責(zé)編:小OO 時(shí)間:2020-11-27 14:13:30
文檔

python多線程socket編程中將多客戶端接入的方法

Python中實(shí)現(xiàn)socket通信的服務(wù)端比較復(fù)雜,而客戶端非常簡單,所以客戶端基本上都是用sockct模塊實(shí)現(xiàn),而服務(wù)。端用有很多模塊可以使用,如下:1、客戶端;
推薦度:
導(dǎo)讀Python中實(shí)現(xiàn)socket通信的服務(wù)端比較復(fù)雜,而客戶端非常簡單,所以客戶端基本上都是用sockct模塊實(shí)現(xiàn),而服務(wù)。端用有很多模塊可以使用,如下:1、客戶端;
這篇文章主要為大家詳細(xì)介紹了python多線程socket編程之多客戶端接入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Python中實(shí)現(xiàn)socket通信的服務(wù)端比較復(fù)雜,而客戶端非常簡單,所以客戶端基本上都是用sockct模塊實(shí)現(xiàn),而服務(wù)
端用有很多模塊可以使用,如下:

這里寫圖片描述

1、客戶端

#!/usr/bin/env python
#coding:utf-8
'''
file:client.py
date:9/9/17 3:43 PM
author:lockey
email:lockey@123.com
desc:socket編程客戶端,python3.6.2
'''
import socket,sys
HOST = '192.168.1.6'
PORT = 8998
ADDR =(HOST,PORT)
BUFSIZE = 1024

sock = socket.socket()
try:
 sock.connect(ADDR)
 print('have connected with server')

 while True:
 data = input('lockey# ')
 if len(data)>0:
 print('send:',data)
 sock.sendall(data.encode('utf-8')) #不要用send()
 recv_data = sock.recv(BUFSIZE)
 print('receive:',recv_data.decode('utf-8'))
 else:
 sock.close()
 break
except Exception:
 print('error')
 sock.close()
 sys.exit()


2、SocketServer模塊

為了能夠讓多個(gè)客戶端同時(shí)接入服務(wù)并進(jìn)行通信,服務(wù)端將使用SocketServer模塊來實(shí)現(xiàn),這樣的話用戶不用在子線程結(jié)束后,利用父進(jìn)程對(duì)它進(jìn)行處理,也不用關(guān)心socket的關(guān)閉,一切都由SocketServer來完成。

#!/usr/bin/env python
#coding:utf-8
'''
file:client.py
date:9/9/17 3:43 PM
author:lockey
email:lockey@123.com
desc:socket編程服務(wù)器端,python3.6.2
'''
from socketserver import BaseRequestHandler,ThreadingTCPServer
import threading

BUF_SIZE=1024

class Handler(BaseRequestHandler):
 def handle(self):
 address,pid = self.client_address
 print('%s connected!'%address)
 while True:
 data = self.request.recv(BUF_SIZE)
 if len(data)>0:
 print('receive=',data.decode('utf-8'))
 cur_thread = threading.current_thread()
 #response = '{}:{}'.format(cur_thread.ident,data)
 self.request.sendall('response'.encode('utf-8'))
 print('send:','response')
 else:
 print('close')
 break

if __name__ == '__main__':
 HOST = '192.168.1.6'
 PORT = 8998
 ADDR = (HOST,PORT)
 server = ThreadingTCPServer(ADDR,Handler) #參數(shù)為監(jiān)聽地址和已建立連接的處理類
 print('listening')
 server.serve_forever() #監(jiān)聽,建立好TCP連接后,為該連接創(chuàng)建新的socket和線程,并由處理類中的handle方法處理
 print(server)

以下測試中我使用另外一臺(tái)主機(jī)和本機(jī)的兩個(gè)中斷去連接服務(wù)器,都可以正常連接并且能進(jìn)行數(shù)據(jù)應(yīng)答交互

這里寫圖片描述

注意:此程序示例運(yùn)行平臺(tái)為rhel7.2.x86_64,python版本為3.6.2,對(duì)于windows平臺(tái)和非同一python版本的用戶可能缺乏一定的兼容性,如果是其他平臺(tái)用戶請(qǐng)自行修正?。?/p>

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

python多線程socket編程中將多客戶端接入的方法

Python中實(shí)現(xiàn)socket通信的服務(wù)端比較復(fù)雜,而客戶端非常簡單,所以客戶端基本上都是用sockct模塊實(shí)現(xiàn),而服務(wù)。端用有很多模塊可以使用,如下:1、客戶端;
推薦度:
標(biāo)簽: 客戶 連接的 客戶端
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top