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网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
python以环状形式组合排列图片并输出的方法
Mar 17 Python
常见python正则用法的简单实例
Jun 21 Python
python实现简单爬虫功能的示例
Oct 24 Python
一份python入门应该看的学习资料
Apr 11 Python
python去除扩展名的实例讲解
Apr 23 Python
Python 经典算法100及解析(小结)
Sep 13 Python
详解Python3 pickle模块用法
Sep 16 Python
numpy按列连接两个维数不同的数组方式
Dec 06 Python
python 项目目录结构设置
Feb 14 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
关于Python解包知识点总结
May 05 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
php事件驱动化设计详解
2016/11/10 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
Jquery中对数组的操作代码
2011/08/12 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
关于react-router的几种配置方式详解
2017/07/24 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python获取糗百图片代码实例
2013/12/18 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
迪拜航空官方网站:flydubai
2017/04/20 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
高中体育教学反思
2014/01/29 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
高中军训感言1000字
2014/03/01 职场文书
Python中的 No Module named ***问题及解决
2022/07/23 Python