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 相关文章推荐
github配置使用指南
Nov 18 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
TensorFlow 模型载入方法汇总(小结)
Jun 19 Python
详解django中使用定时任务的方法
Sep 27 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
python找出一个列表中相同元素的多个索引实例
Jun 11 Python
python覆盖写入,追加写入的实例
Jun 26 Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
500行python代码实现飞机大战
Apr 24 Python
Pycharm安装python库的方法
Nov 24 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设计聊天室步步通
2006/10/09 PHP
支持中文字母数字、自定义字体php验证码代码
2012/02/27 PHP
smarty自定义函数用法示例
2016/05/20 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
javascript完美实现给定日期返回上月日期的方法
2017/06/15 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
解决vue props 拿不到值的问题
2018/09/11 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
python直接访问私有属性的简单方法
2016/07/25 Python
Python 递归函数详解及实例
2016/12/27 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
python xpath获取页面注释的方法
2019/01/14 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
车工岗位职责
2013/11/26 职场文书
社区庆中秋节活动方案
2014/02/07 职场文书
企业公益活动策划方案
2014/08/24 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
MySQL修炼之联结与集合浅析
2021/10/05 MySQL