Python socket实现处理多个连接
socket实现处理多个连接 |
实现处理多个连接
使用whlie循环实现多个客户端,排队请求服务端
循环监听端口发送信息(windos,Linux)
1.Linux 系统如果客户端断开连接,会循环打印
2.Windos 系统如果客户端断开连接,会报错中断
3.案例:在linux系统下实现
4.需求:可以实现单个用户断开,并同过排队对服务端访问。
客户端
- #客户端Linux系统下:输入命令通过服务端返回
- import socket
- #声明协议类型,同事生成socket连接对象
- client = socket.socket()
- #链接地址和端口,元组(本地,端口)
- client.connect(('localhost',6969))
- #使用input循环向服务端发送请求
- while True:
- msg = input(">>:").strip()
- if len(msg) == 0:continue
- #发送数据 b将字符串转为bys类型
- client.send(msg.encode("utf-8"))
- #接收服务器端的返回,需要声明收多少,默认1024字节
- data = client.recv(1024)
- #打印data是recv的data
- print("recv:",data)
- #关闭接口
- client.close()
服务端
- #服务端Linux系统下:处理命令并返回
- import socket
- import os
- #声明类型,生成socket链接对象
- server = socket.socket()
- #监听接收端口元组(本地,端口),绑定要监听的端口
- server.bind(('localhost',6969))
- #1.监听
- #2.“5”最大监听数,允许多少人在排队
- server.listen(5)
- print("我要开始等待客户端了")
- #循环锁定访问客户端
- while True:
- #1.等待客户端 #会返回链接的标记位conn,与连接的地址
- #2.客户端同过conn,addr进行通话
- #3.conn就是客户端连接过来而在服务器端为其生成的一个连接实例
- conn,addr = server.accept()
- #查看标记位与IP地址
- print(conn,addr)
- print("客户端 他 进来了!")
- #循环处理客户端请求
- while True:
- #1.接收数据,1024字节
- #2.如果发不完会存在缓冲去,下次在发送。
- #3.缓冲区每次最多发32768字节
- #4.每个系统不同,超出数值会有限制。
- data = conn.recv(102400)
- #返回
- print(data)
- #Linux系统内可以判断是否为空。
- if not data:break
- #执行命令,赋值给变量
- res = os.popen(data).read()
- #返回一个值,返回res命令
- conn.send(res)
- #sendll就是循环send,用法发送大型文件。
- #conn.sendll(res)
- #关闭链接
- server.close()
Python socket实现处理多个连接的更多相关文章
- Python socket 广播信息到所有连接的客户端
Python3,多线程,多客户端,广播数据 #!/usr/bin/env python3 import time import threading import queue import socket ...
- python socket 编程之三:长连接、短连接以及心跳
长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包. 短连接:开启一个socket连接,收发完数据后,立刻关闭连接. 心跳:长连接在没有数据通信时,定时发送数据包(心跳 ...
- python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)
长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包. 短连接:开启一个socket连接,收发完数据后,立刻关闭连接. 心跳:长连接在没有数据通信时,定时发送数据包(心跳 ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- Python Socket 网络编程
Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...
- Python socket进阶 多线程/进程
#首先,什么场合下用进程,什么场合下用线程: . 计算密集型的用进程. . IO密集型的用进程. xSocket语法及相关 Socket Families(地址簇) socket.AF_UNIX un ...
- python socket和socketserver
Python提供了两个基本的socket模块.一个是socket,它提供了标准的BSD Socket API:另一个是socketServer,它提供了服务器中心类,可以简化网络服务器的开发. 下面先 ...
- python socket编程详细介绍
Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络 ...
- Python socket编程之二:【struct.pack】&【struct.unpack】
import struct """通过 socket 的 send 和 recv 只能传输 str 格式的数据""" "" ...
随机推荐
- python基础类型—数字(Number)
Python3 支持 int.float.bool.complex(复数). 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long. 像大多数语言一样,数 ...
- 11.9luffycity(4)
2018-11-9 17:57:09 明天开始自己独立写luffy部分表的接口, 越努力,越幸运!永远不要高估自己! 明天后天先不想下看视频,把接口做完,然后整理一下笔记,温故而习之,可以为师啊! 知 ...
- python接口自动化测试(七)unittest 生成测试报告
用例的管理问题解决了后,接下来要考虑的就是报告我问题了,这里生成测试报告主要用到 HTMLTestRunner.py 这个模块,下面简单介绍一下如何使用: 一.下载HTMLTestRunner下载: ...
- thinkphp 在本地正常,在云端ubuntu下报控制器不存在
thinkphp 在本地正常,在云端ubuntu下报控制器不存在的错 ubuntu是严格区分大小写的,本地的服务器可能对大小写要求没有那么严格, thinkphp的控制器的文件夹默认是小写字母,如果你 ...
- 20、promise与ajax jsonp
一.Promise的作用是什么? 当有多个请求之间有相互依赖关系(紧接着的请求需要上一次请求的返回结果),这时promise的作用就凸显出来了. 二.如何使用promise? new Promise( ...
- http proxy模块参数
http proxy模块参数 nginx功能的代理功能是是通过http proxy模块来实现的.默认在安装Nginx是已经安装了http proxy模块,可以直接使用. http模块相关参数 说明 p ...
- Python学习之旅(十七)
Python基础知识(16):面向对象编程(Ⅰ) 类和实例 类是抽象的模板 实例是根据类创建出来的一个个具体的对象,每个对象都拥有相同的方法,但各自的数据可能不同. 类可以在创建实例的时候,把一些我们 ...
- 登录注册页面html模版
登录注册页面html模版 地址:http://download.csdn.net/detail/xiaosongaixiaoqian/5432033
- redis3.0.3集群搭建
redis3.0版本之后支持Cluster,具体介绍redis集群我就不多说,了解请看redis中文简介. 首先,直接访问redis.io官网,下载redis.tar.gz,现在版本3.0.3,我下面 ...
- bugfree3.0.1-导入excel测试用例
大多数项目里只用BugFree做缺陷管理工具,其实还可以通过该工具导入测试用例,记录测试结果,最后获得统计结果. 难点 1.导入文件要求XML格式: 2.一般我们的测试用例都是用excle文件存取,很 ...