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操作摄像头截图实现远程监控的例子
Mar 25 Python
python自动zip压缩目录的方法
Jun 28 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
python解析基于xml格式的日志文件
Feb 25 Python
Python中模块与包有相同名字的处理方法
May 05 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
python操作redis方法总结
Jun 06 Python
利用pyuic5将ui文件转换为py文件的方法
Jun 19 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
python属于软件吗
Jun 18 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设计模式之简单工厂模式详解
2014/09/04 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
浅谈python内置变量-reversed(seq)
2017/06/21 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
详解Django中间件执行顺序
2018/07/16 Python
Python笔记之facade模式
2019/11/20 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
九州传奇上机题
2014/07/10 面试题
大学毕业生简单自荐信
2013/11/05 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
统计工作个人总结
2015/03/03 职场文书
慰问信格式规范
2015/03/23 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
社区服务理念口号
2015/12/25 职场文书
党员反邪教心得体会
2016/01/15 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
Python必备技巧之函数的使用详解
2022/04/04 Python
Java Spring读取和存储详细操作
2022/08/05 Java/Android