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实现根据指定端口探测服务器/模块部署的方法
Aug 25 Python
python中常用检测字符串相关函数汇总
Apr 15 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
linux下python中文乱码解决方案详解
Aug 28 Python
使用python制作一个解压缩软件
Nov 13 Python
python中的RSA加密与解密实例解析
Nov 18 Python
pytorch masked_fill报错的解决
Feb 18 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 Python
Python 数据可视化工具 Pyecharts 安装及应用
Apr 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
PHP脚本的10个技巧(4)
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
基于ajax与msmq技术的消息推送功能实现代码
2016/12/26 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
pandas 层次化索引的实现方法
2019/07/06 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
Python解析多帧dicom数据详解
2020/01/13 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
数据库笔试题
2013/05/09 面试题
会计电算化专业个人的自我评价
2013/11/24 职场文书
优秀的茶餐厅创业计划书
2014/01/03 职场文书
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
双语教学实施方案
2014/03/23 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
党员创先争优心得体会
2014/09/11 职场文书
2014年人大工作总结
2014/12/10 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers