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程序中的实现及简单改进
May 04 Python
Python中如何获取类属性的列表
Dec 26 Python
Python 函数基础知识汇总
Mar 09 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
启动Atom并运行python文件的步骤
Nov 09 Python
python for 循环获取index索引的方法
Feb 01 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
python将unicode和str互相转化的实现
May 11 Python
python中的django是做什么的
Jul 31 Python
Python爬取科目四考试题库的方法实现
Mar 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中批量替换文件名的实现代码
2011/07/20 PHP
PHP的5个安全措施小结
2012/07/17 PHP
php汉字转拼音的示例
2014/02/27 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
2019/05/09 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
python脚本内运行linux命令的方法
2015/07/02 Python
Python实现带百分比的进度条
2016/06/28 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
python实现五子棋程序
2020/04/24 Python
python3的pip路径在哪
2020/06/23 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
外贸实习生自荐信范文
2013/11/24 职场文书
工作自我评价分享
2013/12/01 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
党支部鉴定意见
2015/06/02 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
深入理解pytorch库的dockerfile
2022/06/10 Python