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实现根据窗口标题调用窗口的方法
Mar 13 Python
python通过pil模块获得图片exif信息的方法
Mar 16 Python
Python中datetime常用时间处理方法
Jun 15 Python
你应该知道的python列表去重方法
Jan 17 Python
Python中pygal绘制雷达图代码分享
Dec 07 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
Python 中如何写注释
Aug 28 Python
Python+unittest+requests 接口自动化测试框架搭建教程
Oct 09 Python
Python Unittest原理及基本使用方法
Nov 06 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
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
javascript 兼容各个浏览器的事件
2015/02/04 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
Python MySQLdb Linux下安装笔记
2015/05/09 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
性能测试工程师的面试题
2015/02/20 面试题
新娘父亲婚礼致辞
2014/01/16 职场文书
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers