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实现发送email的几种常用方法
Aug 18 Python
Python实现全角半角转换的方法
Aug 18 Python
wxPython之解决闪烁的问题
Jan 15 Python
好的Python培训机构应该具备哪些条件
May 23 Python
利用pandas将numpy数组导出生成excel的实例
Jun 14 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
python创造虚拟环境方法总结
Mar 04 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 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/06/09 PHP
PHP对象Object的概念 介绍
2012/06/14 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
快速了解Python相对导入
2018/01/12 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
幼儿园师德师风学习材料
2014/05/29 职场文书
工作散漫检讨书
2014/09/16 职场文书
初一军训感言
2015/08/01 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server