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实现2048小游戏
Mar 30 Python
python去除所有html标签的方法
May 05 Python
详解Python中dict与set的使用
Aug 10 Python
Python使用PIL模块生成随机验证码
Nov 21 Python
使用python实现ANN
Dec 20 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
利用python画出折线图
Jul 26 Python
Python退火算法在高次方程的应用
Jul 26 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
Python3 itchat实现微信定时发送群消息的实例代码
Jul 12 Python
Python生成随机验证码代码实例解析
Jun 09 Python
pymysql模块使用简介与示例
Nov 17 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生成唯一订单号的方法汇总
2015/04/16 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
jquery multiSelect 多选下拉框
2010/07/09 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
Python之字典添加元素的几种方法
2020/09/30 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
Python 里最强的地图绘制神器
2021/03/01 Python
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
工程管理造价应届生求职信
2013/11/13 职场文书
大学生个人推荐信范文
2013/11/25 职场文书
求职信名称怎么写
2014/05/26 职场文书
应急处置方案
2014/06/16 职场文书
国际商务专业求职信
2014/07/15 职场文书
小学国庆节活动总结
2015/03/23 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA