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网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
用Python输出一个杨辉三角的例子
Jun 13 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
Python之读取TXT文件的方法小结
Apr 27 Python
在python 中实现运行多条shell命令
Jan 07 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
python pyqtgraph 保存图片到本地的实例
Mar 14 Python
django执行原始查询sql,并返回Dict字典例子
Apr 01 Python
python 提取html文本的方法
May 20 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
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
JS 统计时间
2021/03/09 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
python命令行工具Click快速掌握
2019/07/04 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
django rest framework 过滤时间操作
2020/07/12 Python
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
老公给老婆的道歉信
2014/01/10 职场文书
村居抓节水倡议书
2014/05/19 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
撤诉申请怎么写
2015/05/19 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
六年级作文之自救
2019/12/19 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js