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实现处理多个连接的更多相关文章

  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. 远程连接服务器影像文件进行服务发布以及问题解决【the data item is inaccessible】

    场景模拟: 本机安装有arcgis desktop以及arcgis server10.1,server的站点账号为arcgis. 需要发布影像服务并进行切片,使用的影像数据存放在远程服务器上,影像较大 ...

  2. 用SUMIF对超15位的代码进行条件求和,出错了,原因是....

    用SUMIF对超15位的代码进行条件求和,出错了,原因是.... 2017-10-29 23:01 一.问题 有读者朋友问: 用SUMIF进行条件求和时,如果统计的条件是超15位的代码,就会出错,比如 ...

  3. Elasticsearch设置最大返回条数

    在Elasticsearch中如果需要做分页查询,我们通常使用form和size实现.form指定从有序哪一行开始,size表示从当前开始读取多少行.但是我们发现查询结果最大只能到10000,这是因为 ...

  4. ubuntu中python3安装package

    1.实验环境 Ubuntu16.04x86 + python3.5 ubuntu中同时存在python2.7 和 python3.5 2.pip使用说明 sudo pip install packag ...

  5. 18、MySQL

    ++主键(primary key) 能够唯一标识表中某一行的属性或属性组++.==一个表只能有一个主键==,但可以有多个候选索引.==主键可以保证记录的唯一==和==主键域非空==,数据库管理系统对于 ...

  6. java.io.UTFDataFormatException: encoded string too long:

    java.io.UTFDataFormatException: encoded string too long: 259553 bytes 按如下修改可避开此问题. - output.writeUTF ...

  7. css的小知识3

    1.补充 margin的margin:0 auto:会解决元素的居中,前提是给这个元素设置width 2.css的层叠问题 css有两个性质 1.继承性 2.层叠性  选择器的一种选择能力,谁的权重大 ...

  8. 泡泡一分钟:Cubic Range Error Model for Stereo Vision with Illuminators

    Cubic Range Error Model for Stereo Vision with Illuminators 带有照明器的双目视觉的三次范围误差模型 "链接:https://pan ...

  9. ECMAScript基础

    概念: 1):区分大小写 2):变量是弱类型的. 3):每行结尾的分号可有可无 4):注释与Java,C和PHP语言的注释相同 5):括号表明代码块 原始值:是存储在栈中的简单数据段,也就是说他们的值 ...

  10. Oracle对于敏感数据的处理,可以采用策略(dbms_rls.add_policy)

    Oracle Policy的简单说明: Policy应用于数据行访问权限控制时,其作用简而言之,就是在查询数据表时,自动在查询结果上加上一个Where子句.假如该查询已有where子句,则在该Wher ...