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 2.7.x 和 3.x 版本的重要区别小结
Nov 28 Python
利用Python获取赶集网招聘信息前篇
Apr 18 Python
Python实现简单http服务器
Apr 12 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
python判断数字是否是超级素数幂
Sep 27 Python
使用Django清空数据库并重新生成
Apr 03 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
一篇文章搞懂python的转义字符及用法
Sep 03 Python
详解Python中import机制
Sep 11 Python
如何用python实现一个HTTP连接池
Jan 14 Python
opencv读取视频并保存图像的方法
Jun 04 Python
Python自动化测试PO模型封装过程详解
Jun 22 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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
node.js中的require使用详解
2014/12/15 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
详解jQuery中的事件
2016/12/14 Javascript
jquery replace方法去空格
2017/05/08 jQuery
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
python实现连连看游戏
2020/02/14 Python
Django中的AutoField字段使用
2020/05/18 Python
智利最大的网上商店:Linio智利
2016/11/24 全球购物
致百米运动员广播稿
2014/01/29 职场文书
新文化运动的基本口号
2014/06/21 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书
详解Django的MVT设计模式
2021/04/29 Python
Go并发4种方法简明讲解
2022/04/06 Golang