python多线程socket编程之多客户端接入


Posted in Python onSeptember 12, 2017

Python中实现socket通信的服务端比较复杂,而客户端非常简单,所以客户端基本上都是用sockct模块实现,而服务
端用有很多模块可以使用,如下:

python多线程socket编程之多客户端接入

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模块

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

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

python多线程socket编程之多客户端接入

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python sqlobject(mysql)中文乱码解决方法
Nov 14 Python
python访问sqlserver示例
Feb 10 Python
Python常用模块介绍
Nov 21 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
python中自带的三个装饰器的实现
Nov 08 Python
Python 实现日志同时输出到屏幕和文件
Feb 19 Python
Python如何使用ConfigParser读取配置文件
Nov 12 Python
Python Process创建进程的2种方法详解
Jan 25 Python
Python OpenCV 图像平移的实现示例
Jun 04 Python
python数据结构之链表详解
Sep 12 #Python
Python数据结构之单链表详解
Sep 12 #Python
python处理Excel xlrd的简单使用
Sep 12 #Python
Python3.6简单操作Mysql数据库
Sep 12 #Python
Python文件和流(实例讲解)
Sep 12 #Python
Anaconda多环境多版本python配置操作方法
Sep 12 #Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 #Python
You might like
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
javascript[js]获取url参数的代码
2007/10/17 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
详解python3百度指数抓取实例
2016/12/12 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Python while循环使用else语句代码实例
2020/02/07 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
大学生实习自我鉴定
2013/12/11 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
建筑安全责任书范本
2014/07/24 职场文书
爱心捐书倡议书
2015/04/27 职场文书
通用员工手册范本
2015/05/14 职场文书
贫困证明怎么写
2015/06/16 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书