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. 谢大神给的C++和C# DES加解密代码

    // CPPdesTest.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"//#include <windows.h>//#inc ...

  2. linux系统下Nagios+rrdtool+Pnp4nagios监控环境的搭建

    环境中的软件版本>>>>>>>>>>>>>>>>>>nagios版本:3.5.1rrdtoo ...

  3. Educational Codeforces Round 50

    1036A - Function Height    20180907 \(ans=\left \lceil \frac{k}{n} \right \rceil\) #include<bits/ ...

  4. 唉,可爱的小朋友---(DFS)

    唉,小朋友是比较麻烦的.在一个幼儿园里,老师要上一节游戏课,有N个小朋友要玩游戏,做游戏时要用小皮球,但是幼儿园里只有M个小皮球,而且有些小朋友不喜欢和一些小朋友在一起玩,而只喜欢和另一些小朋友一起玩 ...

  5. MySQL数据库报错pymysql.err.InterfaceError: (0, '')

    今天入库的时候出现了报错pymysql.err.InterfaceError: (0, ''),经过排查,发现是由于把连接数据库的代码放到了插入函数的外部,导致多线程运行出错 def write_in ...

  6. php 腾讯地图和百度地图的相互转换

    关于百度和腾讯地图坐标转换的问题,网上大多给的是JS实现的,而JS又是异步实现的,无法返回值,在有些应用场景下不好使用,这里我从腾讯论坛上找到了一个PHP转换的方法,贴出来分享给大家.经测试十分有效! ...

  7. 使用 EF Core 的 EnableRetryOnFailure 解决短暂的数据库连接失败问题

    阿里云服务器有时会出现短暂的连接不上数据库服务器(RDS)的问题,之前由于没有启用 Entity Framework Core 的失败重试功能(默认是禁用的),短暂的连接失败立马会引发下面的异常从而出 ...

  8. ZOJ 4062 - Plants vs. Zombies - [二分+贪心][2018 ACM-ICPC Asia Qingdao Regional Problem E]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4062 题意: 现在在一条 $x$ 轴上玩植物大战僵尸,有 $n$ ...

  9. favorite learning link

    Xpath https://www.cnblogs.com/chenshaoping/p/5540434.html Awk Sort https://www.cnblogs.com/chengmo/a ...

  10. vim diff 使用

    1. 可以在用户目录下编辑.vimrc 文件,设置vim格式.如无该文件,添加即可vim ~/.vimrc 内容自己添加set ts=4 "set tabstop=4set nu    &q ...