全网整合营销服务商

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

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


相关文章: 如何快速辨别茅台真假?关键步骤解析  股票网站制作软件,网上股票怎么开户?  如何在腾讯云免费申请建站?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何快速生成专业多端适配建站电话?  青岛网站建设如何选择本地服务器?  如何正确下载安装西数主机建站助手?  建站之星代理平台如何选择最佳方案?  大连网站制作公司哪家好一点,大连买房网站哪个好?  网站制作服务平台,有什么网站可以发布本地服务信息?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  C++时间戳转换成日期时间的步骤和示例代码  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  建站VPS选购需注意哪些关键参数?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  c# await 一个已经完成的Task会发生什么  如何选择适合PHP云建站的开源框架?  建站168自助建站系统:快速模板定制与SEO优化指南  建站主机是否等同于虚拟主机?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  c# 在高并发场景下,委托和接口调用的性能对比  网站插件制作软件免费下载,网页视频怎么下到本地插件?  建站之星伪静态规则如何正确配置?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  音乐网站服务器如何优化API响应速度?  安云自助建站系统如何快速提升SEO排名?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  c++ stringstream用法详解_c++字符串与数字转换利器  香港服务器如何优化才能显著提升网站加载速度?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  孙琪峥织梦建站教程如何优化数据库安全?  网站微信制作软件,如何制作微信链接?  如何快速搭建个人网站并优化SEO?  如何在企业微信快速生成手机电脑官网?  Android自定义控件实现温度旋转按钮效果  高防服务器租用如何选择配置与防御等级?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  如何快速启动建站代理加盟业务?  建站三合一如何选?哪家性价比更高?  建站主机如何安装配置?新手必看操作指南  如何自定义建站之星模板颜色并下载新样式?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  h5网站制作工具有哪些,h5页面制作工具有哪些?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  上海网站制作开发公司,上海买房比较好的网站有哪些?  利用JavaScript实现拖拽改变元素大小  浅谈Javascript中的Label语句  山东云建站价格为何差异显著? 

您的项目需求

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