全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

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)

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

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

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


# python  # 多线程  # socket  # Python 网络编程起步(Socket发送消息)  # Python socket编程实例详解  # 最基础的Python的socket编程入门教程  # Python Socket编程入门教程  # 详解Python Socket网络编程  # python之Socket网络编程详解  # python网络编程学习笔记(五):socket的一些补充  # Python Socket编程详细介绍  # 关于Python Socket编程的要点详解  # 客户端  # 服务端  # 都是  # 多个  # 有很多  # 一切都  # 运行平台  # 可以使用  # 本机  # 用在  # 来实现  # 对它  # 并由  # 来完成  # 不要用  # 非同  # 大家多多  # 为该  # 这样的话  # 类中 


相关文章: 如何获取上海专业网站定制建站电话?  兔展官网 在线制作,怎样制作微信请帖?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何通过虚拟主机空间快速建站?  常州企业网站制作公司,全国继续教育网怎么登录?  建站之家VIP精选网站模板与SEO优化教程整合指南  如何高效完成独享虚拟主机建站?  淘宝制作网站有哪些,淘宝网官网主页?  已有域名如何快速搭建专属网站?  宝塔新建站点报错如何解决?  开源网站制作软件,开源网站什么意思?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何快速查询网站的真实建站时间?  济南企业网站制作公司,济南社保单位网上缴费步骤?  linux top下的 minerd 木马清除方法  广州美橙建站如何快速搭建多端合一网站?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  如何在阿里云虚拟服务器快速搭建网站?  Python文件管理规范_工程实践说明【指导】  宝塔建站教程:一键部署配置流程与SEO优化实战指南  建站之星CMS五站合一模板配置与SEO优化指南  如何设置并定期更换建站之星安全管理员密码?  如何将凡科建站内容保存为本地文件?  如何通过商城免费建站系统源码自定义网站主题?  制作网站的基本流程,设计网站的软件是什么?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  大型企业网站制作流程,做网站需要注册公司吗?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  如何通过西部建站助手安装IIS服务器?  如何通过FTP服务器快速搭建网站?  Python lxml的etree和ElementTree有什么区别  如何登录建站主机?访问步骤全解析  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  北京制作网站的公司,北京铁路集团官方网站?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  广州商城建站系统开发成本与周期如何控制?  行程制作网站有哪些,第三方机票电子行程单怎么开?  如何在Windows环境下新建FTP站点并设置权限?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  如何在IIS中新建站点并配置端口与IP地址?  ,石家庄四十八中学官网?  香港服务器如何优化才能显著提升网站加载速度?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。