socket实现处理多个连接

实现处理多个连接

  使用whlie循环实现多个客户端,排队请求服务端

循环监听端口发送信息(windos,Linux)

  1.Linux 系统如果客户端断开连接,会循环打印

  2.Windos 系统如果客户端断开连接,会报错中断 

  3.案例:在linux系统下实现

  4.需求:可以实现单个用户断开,并同过排队对服务端访问。

客户端

  1. #客户端Linux系统下:输入命令通过服务端返回
  2. import socket
  3.  
  4. #声明协议类型,同事生成socket连接对象
  5. client = socket.socket()
  6.  
  7. #链接地址和端口,元组(本地,端口)
  8. client.connect(('localhost',6969))
  9.  
  10. #使用input循环向服务端发送请求
  11. while True:
  12. msg = input(">>:").strip()
  13. if len(msg) == 0:continue
  14.  
  15. #发送数据 b将字符串转为bys类型
  16. client.send(msg.encode("utf-8"))
  17.  
  18. #接收服务器端的返回,需要声明收多少,默认1024字节
  19. data = client.recv(1024)
  20.  
  21. #打印data是recv的data
  22. print("recv:",data)
  23.  
  24. #关闭接口
  25. client.close()

服务端

  1. #服务端Linux系统下:处理命令并返回
  2. import socket
  3. import os
  4.  
  5. #声明类型,生成socket链接对象
  6. server = socket.socket()
  7.  
  8. #监听接收端口元组(本地,端口),绑定要监听的端口
  9. server.bind(('localhost',6969))
  10.  
  11. #1.监听
  12. #2.“5”最大监听数,允许多少人在排队
  13. server.listen(5)
  14.  
  15. print("我要开始等待客户端了")
  16.  
  17. #循环锁定访问客户端
  18. while True:
  19.  
  20. #1.等待客户端 #会返回链接的标记位conn,与连接的地址
  21. #2.客户端同过conn,addr进行通话
  22. #3.conn就是客户端连接过来而在服务器端为其生成的一个连接实例
  23. conn,addr = server.accept()
  24.  
  25. #查看标记位与IP地址
  26. print(conn,addr)
  27.  
  28. print("客户端 他 进来了!")
  29.  
  30. #循环处理客户端请求
  31. while True:
  32.  
  33. #1.接收数据,1024字节
  34. #2.如果发不完会存在缓冲去,下次在发送。
  35. #3.缓冲区每次最多发32768字节
  36. #4.每个系统不同,超出数值会有限制。
  37. data = conn.recv(102400)
  38.  
  39. #返回
  40. print(data)
  41.  
  42. #Linux系统内可以判断是否为空。
  43. if not data:break
  44.  
  45. #执行命令,赋值给变量
  46. res = os.popen(data).read()
  47.  
  48. #返回一个值,返回res命令
  49. conn.send(res)
  50.  
  51. #sendll就是循环send,用法发送大型文件。
  52. #conn.sendll(res)
  53.  
  54. #关闭链接
  55. server.close()

Python socket实现处理多个连接的更多相关文章

  1. Python socket 广播信息到所有连接的客户端

    Python3,多线程,多客户端,广播数据 #!/usr/bin/env python3 import time import threading import queue import socket ...

  2. python socket 编程之三:长连接、短连接以及心跳

    长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包. 短连接:开启一个socket连接,收发完数据后,立刻关闭连接. 心跳:长连接在没有数据通信时,定时发送数据包(心跳 ...

  3. python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)

    长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包. 短连接:开启一个socket连接,收发完数据后,立刻关闭连接. 心跳:长连接在没有数据通信时,定时发送数据包(心跳 ...

  4. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  5. Python Socket 网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  6. Python socket进阶 多线程/进程

    #首先,什么场合下用进程,什么场合下用线程: . 计算密集型的用进程. . IO密集型的用进程. xSocket语法及相关 Socket Families(地址簇) socket.AF_UNIX un ...

  7. python socket和socketserver

    Python提供了两个基本的socket模块.一个是socket,它提供了标准的BSD Socket API:另一个是socketServer,它提供了服务器中心类,可以简化网络服务器的开发. 下面先 ...

  8. python socket编程详细介绍

    Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络 ...

  9. Python socket编程之二:【struct.pack】&【struct.unpack】

    import struct """通过 socket 的 send 和 recv 只能传输 str 格式的数据""" "" ...

随机推荐

  1. python基础类型—数字(Number)

    Python3 支持 int.float.bool.complex(复数). 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long. 像大多数语言一样,数 ...

  2. 11.9luffycity(4)

    2018-11-9 17:57:09 明天开始自己独立写luffy部分表的接口, 越努力,越幸运!永远不要高估自己! 明天后天先不想下看视频,把接口做完,然后整理一下笔记,温故而习之,可以为师啊! 知 ...

  3. python接口自动化测试(七)unittest 生成测试报告

    用例的管理问题解决了后,接下来要考虑的就是报告我问题了,这里生成测试报告主要用到 HTMLTestRunner.py 这个模块,下面简单介绍一下如何使用: 一.下载HTMLTestRunner下载: ...

  4. thinkphp 在本地正常,在云端ubuntu下报控制器不存在

    thinkphp 在本地正常,在云端ubuntu下报控制器不存在的错 ubuntu是严格区分大小写的,本地的服务器可能对大小写要求没有那么严格, thinkphp的控制器的文件夹默认是小写字母,如果你 ...

  5. 20、promise与ajax jsonp

    一.Promise的作用是什么? 当有多个请求之间有相互依赖关系(紧接着的请求需要上一次请求的返回结果),这时promise的作用就凸显出来了. 二.如何使用promise? new Promise( ...

  6. http proxy模块参数

    http proxy模块参数 nginx功能的代理功能是是通过http proxy模块来实现的.默认在安装Nginx是已经安装了http proxy模块,可以直接使用. http模块相关参数 说明 p ...

  7. Python学习之旅(十七)

    Python基础知识(16):面向对象编程(Ⅰ) 类和实例 类是抽象的模板 实例是根据类创建出来的一个个具体的对象,每个对象都拥有相同的方法,但各自的数据可能不同. 类可以在创建实例的时候,把一些我们 ...

  8. 登录注册页面html模版

    登录注册页面html模版 地址:http://download.csdn.net/detail/xiaosongaixiaoqian/5432033

  9. redis3.0.3集群搭建

    redis3.0版本之后支持Cluster,具体介绍redis集群我就不多说,了解请看redis中文简介. 首先,直接访问redis.io官网,下载redis.tar.gz,现在版本3.0.3,我下面 ...

  10. bugfree3.0.1-导入excel测试用例

    大多数项目里只用BugFree做缺陷管理工具,其实还可以通过该工具导入测试用例,记录测试结果,最后获得统计结果. 难点 1.导入文件要求XML格式: 2.一般我们的测试用例都是用excle文件存取,很 ...