全网整合营销服务商

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

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


相关文章: 建站之星免费模板:自助建站系统与智能响应式一键生成  公司门户网站制作流程,华为官网怎么做?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  如何快速查询域名建站关键信息?  html制作网站的步骤有哪些,iapp如何添加网页?  如何用已有域名快速搭建网站?  建站之星安装后如何配置SEO及设计样式?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  网站好制作吗知乎,网站开发好学吗?有什么技巧?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  已有域名和空间如何快速搭建网站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何在IIS7上新建站点并设置安全权限?  建站之星与建站宝盒如何选择最佳方案?  建站主机与服务器功能差异如何区分?  建站主机与虚拟主机有何区别?如何选择最优方案?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  网站按钮制作软件,如何实现网页中按钮的自动点击?  教学论文网站制作软件有哪些,写论文用什么软件 ?  常州自助建站费用包含哪些项目?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  实例解析angularjs的filter过滤器  利用JavaScript实现拖拽改变元素大小  如何零基础开发自助建站系统?完整教程解析  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  用v-html解决Vue.js渲染中html标签不被解析的问题  建站之星下载版如何获取与安装?  免费网站制作appp,免费制作app哪个平台好?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  电商平台网站制作流程,电商网站如何制作?  济南网站制作的价格,历城一职专官方网站?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  如何规划企业建站流程的关键步骤?  简历在线制作网站免费版,如何创建个人简历?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何在阿里云虚拟主机上快速搭建个人网站?  如何获取开源自助建站系统免费下载链接?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  自助网站制作软件,个人如何自助建网站?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  c# await 一个已经完成的Task会发生什么  建站主机核心功能解析:服务器选择与网站搭建流程指南  建站中国官网:模板定制+SEO优化+建站流程一站式指南  如何配置WinSCP新建站点的密钥验证步骤?  简单实现Android验证码  如何用狗爹虚拟主机快速搭建网站?  广州美橙建站如何快速搭建多端合一网站? 

您的项目需求

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