国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python多線程socket編程之多客戶端接入

2020-02-16 10:14:32
字體:
供稿:網(wǎng)友

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

這里寫圖片描述

1、客戶端

#!/usr/bin/env python#coding:utf-8'''file:client.pydate:9/9/17 3:43 PMauthor:lockeyemail:lockey@123.comdesc:socket編程客戶端,python3.6.2'''import socket,sysHOST = '192.168.1.6'PORT = 8998ADDR =(HOST,PORT)BUFSIZE = 1024sock = 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()  breakexcept 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.pydate:9/9/17 3:43 PMauthor:lockeyemail:lockey@123.comdesc:socket編程服務(wù)器端,python3.6.2'''from socketserver import BaseRequestHandler,ThreadingTCPServerimport threadingBUF_SIZE=1024class 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')    breakif __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)

以下測(cè)試中我使用另外一臺(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)自行修正!!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林站長(zhǎng)站。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉祥县| 江源县| 文昌市| 莱芜市| 潼关县| 镇安县| 义马市| 漯河市| 开封县| 顺昌县| 淄博市| 吕梁市| 通州区| 丁青县| 怀安县| 新宁县| 彭泽县| 综艺| 礼泉县| 南澳县| 长岛县| 敖汉旗| 京山县| 宝坻区| 德昌县| 洛川县| 太保市| 双辽市| 屯昌县| 宝丰县| 乐山市| 来凤县| 通城县| 临颍县| 洪洞县| 绵阳市| 筠连县| 内丘县| 连平县| 黔东| 诏安县|