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 多线程应用介绍
Dec 19 Python
Python描述器descriptor详解
Feb 03 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
Python入门教程之运算符与控制流
Aug 17 Python
Python生成密码库功能示例
May 23 Python
Python基础知识_浅谈用户交互
May 31 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
May 09 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 Python
PyQt5实现登录页面
May 30 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笔记之:基于面向对象设计的详解
2013/05/14 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
nodejs基础知识
2017/02/03 NodeJs
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
2019/07/13 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
详解Python中类的定义与使用
2017/04/11 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
2014年幼儿园元旦活动方案
2014/02/13 职场文书
五一手机促销方案
2014/03/08 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
Django drf请求模块源码解析
2021/06/08 Python
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python