全网整合营销服务商

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

免费咨询热线: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编程的要点详解  # 客户端  # 服务端  # 都是  # 多个  # 有很多  # 一切都  # 运行平台  # 可以使用  # 本机  # 用在  # 来实现  # 对它  # 并由  # 来完成  # 不要用  # 非同  # 大家多多  # 为该  # 这样的话  # 类中 


相关文章: 宝塔建站教程:一键部署配置流程与SEO优化实战指南  建站主机SSH密钥生成步骤及常见问题解答?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  Android自定义控件实现温度旋转按钮效果  网页设计网站制作软件,microsoft office哪个可以创建网页?  宝塔建站后网页无法访问如何解决?  如何通过cPanel快速搭建网站?  如何注册花生壳免费域名并搭建个人网站?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  如何制作网站标识牌,动态网站如何制作(教程)?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何在腾讯云服务器上快速搭建个人网站?  已有域名能否直接搭建网站?  建站之星如何一键生成手机站?  北京的网站制作公司有哪些,哪个视频网站最好?  建站主机服务器选购指南:轻量应用与VPS配置解析  建站上市公司网站建设方案与SEO优化服务定制指南  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  一键网站制作软件,义乌购一件代发流程?  ,南京靠谱的征婚网站?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何用y主机助手快速搭建网站?  建站之星后台密码遗忘如何找回?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  如何彻底删除建站之星生成的Banner?  定制建站流程步骤详解:一站式方案设计与开发指南  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  哈尔滨网站建设策划,哈尔滨电工证查询网站?  如何基于PHP生成高效IDC网络公司建站源码?  建站之星如何快速解决建站难题?  如何在云主机快速搭建网站站点?  如何在新浪SAE免费搭建个人博客?  如何在服务器上配置二级域名建站?  如何快速生成专业多端适配建站电话?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  建站之星如何修改网站生成路径?  如何撰写建站申请书?关键要点有哪些?  北京网站制作的公司有哪些,北京白云观官方网站?  视频网站制作教程,怎么样制作优酷网的小视频?  宝塔面板创建网站无法访问?如何快速排查修复?  建站之星安装需要哪些步骤及注意事项?  宝塔面板如何快速创建新站点?  教学论文网站制作软件有哪些,写论文用什么软件 ? 

您的项目需求

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