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爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
Python 快速实现CLI 应用程序的脚手架
Dec 05 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
解决python爬虫中有中文的url问题
May 11 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
python-tkinter之按钮的使用,开关方法
Jun 11 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
Python unittest单元测试openpyxl实现过程解析
May 27 Python
keras的三种模型实现与区别说明
Jul 03 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
python实现自动清理文件夹旧文件
May 10 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
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
javascript 写类方式之九
2009/07/05 Javascript
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
mpvue将vue项目转换为小程序
2018/09/30 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python从ftp下载数据保存实例
2013/11/20 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
Python常用的json标准库
2019/02/19 Python
python标记语句块使用方法总结
2019/08/05 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
学用政策心得体会
2014/09/10 职场文书
公务员政审个人总结
2015/02/12 职场文书
质量保证书格式
2015/02/27 职场文书
培训计划通知
2015/07/15 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android