python多线程socket编程中将多客户端接入的方法


当前第2页 返回上一页

为了能够让多个客户端同时接入服务并进行通信,服务端将使用SocketServer模块来实现,这样的话用户不用在子线程结束后,利用父进程对它进行处理,也不用关心socket的关闭,一切都由SocketServer来完成。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

#!/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

'''

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) #参数为监听地址和已建立连接的处理类

 print('listening')

 server.serve_forever() #监听,建立好TCP连接后,为该连接创建新的socket和线程,并由处理类中的handle方法处理

 print(server)

以下测试中我使用另外一台主机和本机的两个中断去连接服务器,都可以正常连接并且能进行数据应答交互

这里写图片描述

注意:此程序示例运行平台为rhel7.2.x86_64,python版本为3.6.2,对于windows平台和非同一python版本的用户可能缺乏一定的兼容性,如果是其他平台用户请自行修正!!

以上就是python多线程socket编程中将多客户端接入的方法的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Python在groupby分组后提取指定位置记录方法

Python整数怎么表示

Python爬虫能够干什么

Python使用协程与并发有什么用?

mac怎么安装Python

Python中列表的用法是什么

Python有switch语句吗

怎么用cmd运行Python

Python中集合可变吗

Python如何判断一个字符串是否包含指定子字符串

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...