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实现sublime3的less编译插件示例
Apr 27 Python
Python基于PycURL自动处理cookie的方法
Jul 25 Python
python实现红包裂变算法
Feb 16 Python
Python画图学习入门教程
Jul 01 Python
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
python pandas消除空值和空格以及 Nan数据替换方法
Oct 30 Python
Django中使用Celery的方法示例
Nov 29 Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 Python
PyQt QMainWindow的使用示例
Mar 24 Python
Python 数据可视化之Matplotlib详解
Nov 02 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
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
php实现的用户查询类实例
2015/06/18 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
python发送邮件接收邮件示例分享
2014/01/21 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
Python单元测试实例详解
2018/05/25 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
Python 画出来六维图
2019/07/26 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
pandas 对group进行聚合的例子
2019/12/27 Python
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
掌上明珠Java程序员面试总结
2016/02/23 面试题
宿舍违规用电检讨书
2014/02/16 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript