Python socket非阻塞模块应用示例


Posted in Python onSeptember 12, 2019

本文实例讲述了Python socket非阻塞模块应用。分享给大家供大家参考,具体如下:

一 服务端程序

# 导入模块
import socketserver
import random
# 定义一个类
class MyServer(socketserver.BaseRequestHandler):
  # 如果handle方法出现报错,则会进行跳过
  # setup方法和finish方法无论如何都会进行执行
  # 首先执行setup
  def setup(self):
    pass
  # 然后执行handle
  def handle(self):
    # 定义连接变量
    conn =self.request
    # 发送消息定义
    msg = "Hello World!"
    # 消息发送
    conn.send(msg.encode())
    # 进入循环,不断接收客户端消息
    while True:
      #接收客户端消息
      data = conn.recv(1024)
      # 打印消息
      print(data.decode())
      # 接收到exit,则进行循环的退出
      if data==b'exit':
        break
      conn.send(data)
      conn.send(str(random.randint(1,1000)).encode())
    conn.close()
  # 最后执行finish
  def finish(self):
    pass
if __name__=="__main__":
  # 创建多线程实例
  server = socketserver.ThreadingTCPServer(('127.0.0.1',8888),MyServer)
  # 开启启动多线程,等待连接
  server.serve_forever()

二 客户端程序

# 导入模块
import socket
# 创建实例
client =socket.socket()
#访问的服务端的ip和端口
ip_port=("127.0.0.1",8888)
# 连接主机
client.connect(ip_port)
#定义一个循环,不断发送消息
while True:
  # 接收主机信息
  data = client.recv(1024)
  # 打印接收的数据
  # 此处byte型数据特指python3.x以上
  print(data.decode())
  # 输入发送的消息
  msg_input=input("请输入发送的消息")
  # 消息发送
  client.send(msg_input.encode())
  if msg_input=="exit":
    break
  data = client.recv(1024)
  print(data.decode())

三 运行结果

1 服务端

E:\Python\python_lab\venv\Scripts\python.exe E:/Python/python_lab/socket_tcp_server2.py

DNS

tcp

how are you

2 客户端1

E:\Python\python_lab\venv\Scripts\python.exe E:/Python/python_lab/socket_clent.py

Hello World!

请输入发送的消息DNS

DNS

857

请输入发送的消息

3 客户端2

E:\Python\python_lab\venv\Scripts\python.exe E:/Python/python_lab/socket_clent.py

Hello World!

请输入发送的消息tcp

tcp

879

请输入发送的消息

4 客户端3

E:\Python\python_lab\venv\Scripts\python.exe E:/Python/python_lab/socket_clent.py

Hello World!

请输入发送的消息how are you

how are you

679

请输入发送的消息

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python不规范的日期字符串处理类
Jun 10 Python
python异常和文件处理机制详解
Jul 19 Python
Python矩阵常见运算操作实例总结
Sep 29 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
pandas 将list切分后存入DataFrame中的实例
Jul 03 Python
使用 Python 写一个简易的抽奖程序
Dec 08 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
Python 读取xml数据,cv2裁剪图片实例
Mar 10 Python
pycharm 关闭search everywhere的解决操作
Jan 15 Python
Python max函数中key的用法及原理解析
Jun 26 Python
Python实现归一化算法详情
Mar 18 Python
Python的条件锁与事件共享详解
Sep 12 #Python
Python的互斥锁与信号量详解
Sep 12 #Python
python使用sklearn实现决策树的方法示例
Sep 12 #Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 #Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 #Python
python conda操作方法
Sep 11 #Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 #Python
You might like
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
2011/08/08 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
python搭建微信公众平台
2016/02/09 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
python网络爬虫学习笔记(1)
2018/04/09 Python
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
python中时间模块的基本使用教程
2019/05/14 Python
Django接收自定义http header过程详解
2019/08/23 Python
python实现横向拼接图片
2020/03/23 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
python双向链表实例详解
2022/05/25 Python
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL