python之socketserver实现并发

服务端

  1. import socketserver
  2. #socketserver模块是用来实现并发
  3. # 我们自己的类里一定要继承socketserver.BaseRequestHandler方法
  4. # 里面需要一个handle方法
  5. # 每当客户端来连接时,就会创建一个实例,实例与实例之间独立
  6. # 实例包含
  7. # self.request:conn 作用:服务端收发信息的对象
  8. # self.client_address:addr 作用:客户端的ip地址
  9. class Myserver(socketserver.BaseRequestHandler):
  10. def handle(self):
  11. print("conn is:"+str(self.request))
  12. print("conn is:" + str(self.client_address))
  13.  
  14. #通讯循环
  15. while True:
  16. #收信息
  17. try:
  18. data = self.request.recv(1024).decode('utf-8')
  19. if data:
  20. print("客户端发过来的信息:" + data)
  21.  
  22. # 发信息
  23. self.request.sendall(data.upper().encode('utf-8'))
  24. except Exception as e:
  25. continue
  26. if __name__=="__main__":
  27. #链接循环
  28. #这个方法需要两个参数,((ip,port),Myserver)
  29. s=socketserver.ThreadingTCPServer(('127.0.0.1',8080),Myserver)
  30. #永远运行
  31. s.serve_forever()
  32.  
  33. #socketserver.ThreadingTCPServer()方法循环不端的接收新的连接
  34. #handle()方法与客户端循环进行通讯

客户端

  1. import socket
  2.  
  3. def main():
  4. ip_port = ('127.0.0.1', 8080)
  5.  
  6. s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  7.  
  8. s2.connect(ip_port) # 连接服务端
  9.  
  10. while 1:
  11. data1 = input("-->").strip()
  12. if not data1:continue
  13. if data1 =='quit':break
  14. s2.sendall(data1.encode('utf8'))
  15. data2=s2.recv(1024)
  16. print(data2.decode("utf-8"))
  17. if __name__ == '__main__':
  18. main()

关于socketserver更多的介绍和使用,可以看一下这篇博文:

https://www.cnblogs.com/Security-Darren/p/4594393.html

python之socketserver实现并发的更多相关文章

  1. python 39 socketserver 模块并发通信

    socketserver模块 socketserver模块实现一个服务端与多个客户端通信.是在socket的基础上进行了一层封装,底层还是调用的socket. socketserver干了两件事: 1 ...

  2. python利用socketserver实现并发套接字功能

    本文实现利用python的socketserver这个强大的模块实现套接字的并发 目录结构如下: 测试文件请放在server_file文件夹里面 server.py #!/usr/bin/env py ...

  3. Python基础-socketserver

    ocketserver通讯模块实现并发操作,基于select.epoll.socket.多线程,实现的正真多线程多并发 socketserver通讯模块底层调用的socket模块,只是它作了处理基于l ...

  4. 文件上传下载、socketserver(并发)、解读socketserver源码

    1.文件上传/下载 学习了socket套接字,我们现在可以写一个文件上传/下载的程序,如下示例: 分析上边代码,我们发现,client发送上传文件相关信息的字典序列化之后,server又给client ...

  5. Python 多线程教程:并发与并行

    转载于: https://my.oschina.net/leejun2005/blog/398826 在批评Python的讨论中,常常说起Python多线程是多么的难用.还有人对 global int ...

  6. 36、IO模型与socketserver实现并发

    特别声明本随笔copy于egon(林海峰). 一 IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步.异步.阻塞.非阻塞 同步(synchronous) IO和异步(asynchronou ...

  7. socketserver实现并发

    socketserver实现并发原理:给每一个前来链接的客户端开启一个线程执行通信.也就是给每一个连接“配备”了一个管家. 下面用一个简单的示例来演示socketserver实现并发(一个服务端,两个 ...

  8. python 使用多进程实现并发编程/使用queue进行进程间数据交换

    import time import os import multiprocessing from multiprocessing import Queue, pool ""&qu ...

  9. 网络编程socketserver实现并发

    import socketserver import struct import json import os class FtpServer(socketserver.BaseRequestHand ...

随机推荐

  1. Python的优势及应用领域

    Python的优势 Python是一门解释型语言,是比较容易入门. Python的程序代码更接近英语,更好好理解. Python的扩展库非常丰富. Python与C的粘合性非常好. Python的缺点 ...

  2. 关于使用jwt编写接口时候对token判断时候错误的机制处理

    前言:php在使用接口时候很多时候都是需要带token的,如果不对token进行校验那么别人就能够随意编写一个token进入你的接口拿数据,应该怎样处理呢? //生成token public func ...

  3. [面试]死锁-最简单的死锁demo

    死锁 什么是死锁 (百度百科) 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁 ...

  4. day20面向对象三大特性 , 类嵌套

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.简述面向对象三大特性并用代码表示."""封装:class Account: ...

  5. R-----shiny包的部分解释和控件介绍

    R-----shiny包的部分解释和控件介绍 作者:周彦通.贾慧 shinyApp( ui = fixedPage( fixedPanel( top = 50, right=50, width=200 ...

  6. Python的安装及小程序练习

    Python 1.Python的安装教程 (1)进入Python官网 (2)双击Python-3.6.4.exe安装程序,勾选Add Python 3.6 to PATH (3)选择自定义安装. (4 ...

  7. angular Observable

    1.回调函数 /** 1.设计实现函数 */ print_msg(msg) { console.log(msg); } /** 2.设计调用函数,param1:实现函数参数,param2:实现函数本身 ...

  8. Mvc Swagger报错的解决办法。

    报错信息:Not supported by Swagger 2.0: Multiple operations with path ‘xxxx.aspx’ and method 'POST' 解决办法出 ...

  9. spring-mvc访问本地html文件

    项目中要用到在线预览word文档,刚开始考虑是要将word转成pdf文件,然后再直接在浏览器打开pdf文档即可, 但是项目部署在Linux下,在网上搜了一下没有找到合适的方法, 后来项目组讨论用POI ...

  10. 使用gethostname()函数和gethostbyname()函数获取主机相关信息

    gethostname() : 返回本地主机的标准主机名. 原型如下: #include <unistd.h> int gethostname(char *name, size_t len ...