socket基础和select(python)

上接
c语言的socket基础[url]http://haoningabc.iteye.com/blog/2305026[/url]
使用python

一言不合上代码
server.py

import socket
s = socket.socket()
host = socket.gethostname()
port = 1234
s.bind((host,port))
s.listen(5)
while True:
c, addr = s.accept()#阻塞
print 'Got connection from', addr
print c.recv(1024)#阻塞
c.close()

客户端
client.py

import socket,sys
s = socket.socket()
host = socket.gethostname()
port = 1234
s.connect((host,port))
#hi=raw_input('hello? ')
hi=sys.stdin.readline()[:-1]
s.send(hi)


代码效果一样
accept阻塞等待客户端
一个客户单就会建立一个c(connection)

最终服务端会变成
一个socket和多个connection

但是还是有顺序,阻塞问题

换上select解决阻塞

import socket,select

s = socket.socket()

host = socket.gethostname()
port = 1234
s.bind((host,port))

s.listen(5)
inputs = [s]
#print str(s)
while True:
#rs=[]
print "while starting....."
rs, ws, es = select.select(inputs,[],[])
#print("rs:"+str(rs))
print("rs len:"+str(len(rs)))
for r in rs:
if r is s:
c, addr = s.accept()
print 'print Got connection from', addr
inputs.append(c)
else:
#print "r is not sssssssssssssss"
try:
data = r.recv(1024)
disconnected = not data
except socket.error:
disconnected = True

if disconnected:
print "print " ,r.getpeername(), 'disconnected'
inputs.remove(r)
else:
print "print ",data

每次accept第一次阻塞完成取得connection后,就放到一个select监控数组里面

下一次循环的时候进入recv阻塞
使
所有的connection都变成recv
最终,任何一个client有数据接收都会马上收到相应,不会阻塞到某一个连接上,
相当于同时开了多个connection

一个好玩的tunproxy,使用select写的
[url]http://www.secdev.org/projects/tuntap_udp/[/url]
把tun设备和socket用select关联起来
[url]http://www.secdev.org/projects/tuntap_udp/files/tunproxy.py[/url]
Python: 使用select函数编写nonblocking TCP/IP socket程序 select函数的理解对于灵活运用socket函数编程有直接的影响,我们编写的网络库一般需要支持多连接,因此select提供的特性很好的满足了这一需求。关于select的解释可以参考:select(2)  使用C或者C++编写一个实例程序相对比较麻烦,我们可以直接使用Python快速开发一个 nonblocking TCP/IP socket Demo来看一下select怎么应用到Soc 阅读详情

相关推荐

ks-快手滑块验证码-Js逆向

本文分析了快手滑块验证码的破解过程。首先通过抓包找到验证码背景图接口,发现需要动态获取captchaSession参数。然后深入分析验证流程,发现verifyParam参数被加密处理,需要追踪其生成逻辑。文章详细解析了加密参数c的构成,包括captchaSn、滑动距离、轨迹信息等,并指出轨迹验证较为严格。最后通过对比浏览器和本地生成的加密值,确认加密逻辑正确,但指出轨迹生成仍需优化。作者建议参考相关文章深入分析轨迹逻辑,并提供了验证成功的截图作为参考。

2302_76420666的博客 1878

Python -【Socket select】基本使用介绍

Python -【Socket Socket select】基本使用介绍

Mr_WoLong 1668

大模型时代的具身智能系列专题(二)

自由形式语言指令 L 指定了一个操作问题,例如“打开最顶部的抽屉”。然而,根据 L 生成机器人轨迹是很困难的,因为 L 可能具有任意长度,或者是不明确的(例如,需要上下文语义)。相反,我们专注于问题的各个阶段(子任务)l_i,它们明确地指定了一个操作任务 (例如,“抓住抽屉把手”,“打开抽屉”),其中被分解的子阶段(子任务)L→l1l2lnL→l1​l2​...ln​由高级规划器(例如,一个LLM或一个基于搜索的规划器)给出。

achao的专栏 2172

python基础教程学习笔记十四

网络编程 1 几个网络设计模块 Socket模块 套接字实例化需要的三个参数: socket.socket(family=AF_INET,#地址族 type=SOCK_STREAM,#流或数据报 proto=0,#使用的协议 fileno=None) 使用以下两个方法进行数据传输:send和recv 一个小型服务器 使用bind方法 和linsten方法 imp...

retacn_yue的专栏 186

[XJTUSE DATABASE]——第三章 关系数据库标准语言SQL

新年了,来个大的,写了好几天,将近9000字,希望对大家有所帮助

weixin_47692652的博客 3120

从格雷码到多频外差:结构光相位展开实战指南(附Python仿真代码)

本文深入探讨了结构光三维测量中的相位展开技术,重点对比了格雷码和多频外差法在工业检测、逆向工程等领域的应用。通过详细的原理图解和Python仿真代码,展示了两种方法在精度、抗噪性和适用场景上的差异,为实际工程中的技术选型提供实用指南。

weixin_42535703的博客 434

Linux编程之select

select系统调用的的用途是:在一段指定的时间内,监听用户感兴趣的文件描述符上可读、可写和异常等事件。 select 机制的优势 为什么会出现select模型? 先看一下下面的这句代码: int iResult = recv(s, buffer,1024); 这是用来接收数据的,在默认的阻塞模式下的套接字里,recv会阻塞在那里,直到套接字连接上有数据可读,把数据读到buffer里后recv函数...

weixin_34010566的博客 1364

RK3588嵌入式开发实战:U-Boot设备树文件修改全指南(含常见踩坑点)

本文为RK3588嵌入式开发者提供了一份详尽的U-Boot设备树文件修改实战指南。文章深入解析了设备树的核心架构,从基础硬件适配到时钟、电源管理等进阶配置,并重点总结了内存节点、串口输出、电源时序等常见踩坑点与解决方案,旨在帮助开发者高效、稳健地完成U-Boot移植与定制工作。

yhn456789的博客 732

隧道工具proxytunnle

通过标准的HTTP / HTTPS代理创建隧道的工具通过HTTP CONNECT方法封装信息适用于内网使用代理并且防火墙只允许代理服务器上网的场景无法创建DNS隧道和ICMP隧道。

分享学习网络的点点滴滴 1389

别再让电池充不满!用CN3791芯片设计太阳能充电电路,这几个调试坑我帮你踩了

本文详细解析了使用CN3791芯片设计太阳能充电电路时的常见调试问题及解决方案。从RCS电阻的选择到MPPT电压偏差的修正,再到线路损耗和温度补偿的优化,提供了全面的避坑指南。通过实测数据和优化方案,帮助工程师提升锂电池充电效率,确保太阳能充电电路的稳定性和可靠性。

weixin_42528191的博客 241

【即插即用模块】卷积篇 | CVPR 2025 | LSConv:大核捕全局,小核提速度,替换 3×3 卷积/自注意力,精度效率双飙升

文章摘要: LSConv是一种新型卷积模块,采用"大核感知+小核聚合"策略,在轻量级视觉任务中表现出色。该模块由两部分组成:7×7深度可分离卷积(LKP)捕捉全局信息,动态3×3卷积(SKA)实现高效特征聚合。相比传统卷积和自注意力机制,LSConv在降低计算量的同时提升了精度,尤其适合高分辨率视觉任务。实验表明,在轻量化模型中用LSConv替代3×3卷积或自注意力,可显著减少计算量并提高准确率。模块支持即插即用,提供Triton优化实现,可直接集成到现有卷积或Transformer架构

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1119

socket 和 select

socket server端和client端过程如下:  服务器端的步骤如下: 1. socket:      建立一个socket 2. bind:          将这个socket绑定在某个文件上(AF_UNIX)或某个端口上(AF_INET)。 3. listen:        开始监听 4. accept:      如果监听到客户端连接,则调用accept接收这个连接并同

kinbo88的专栏 914

高级技能-高可用和容灾-两地三中心、异地多活架构

两地三中心和异地多活是当前主流的跨地域高可用架构方案。两地三中心通过生产中心、同城灾备和异地灾备的组合,提供多级容灾能力,适合对数据安全要求高的行业。异地多活则采用单元化设计,多个站点同时服务,提升资源利用率,但需解决网络延迟、数据冲突等挑战。两种架构在RTO/RPO、一致性、改造成本等方面各具特点,企业应根据业务规模、一致性要求和预算进行选择,可考虑从同城双活起步,逐步向异地多活演进。混合架构可能是平衡容灾与多活的务实方案。

zhongjianfeng100的博客 168

python socket select 一对多_socket基础和select(python)

http://haoningabc.iteye.com/blog/2305026使用python一言不合上代码server.pyimport sockets = socket.socket()host = socket.gethostname()port = 1234s.bind((host,port))s.listen(5)while True:c, addr = s.accept()#阻塞pr...

weixin_42105816的博客 429

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python 高并发 select socket_Python基于select实现的socket服务器

本文实例讲述了Python基于select实现的socket服务器。分享给大家供大家参考,具体如下:借鉴了asyncore模块中select.select的使用方法import socketimport tracebackimport selectEOL1 = b'\n\n'EOL2 = b'\n\r\n'socketmap = {}r,w,e = [],[],[]response = b'HTT...

weixin_39578674的博客 367

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

python socket select 一对多_python socket Select模型 | 学步园

import socketimport sysimport socketimport selects = socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(('192.168.1.103',21152))print("Connected Ok!")while 1:infds,outfds,errfds = select.select...

weixin_39607836的博客 134

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python 高并发 select socket_socket + select 完成伪并发操作的实例

实例如下:#!/usr/bin/env python# -*- coding: utf-8 -*-import socket#创建一个socket对象sk1 = socket.socket()#绑定ip和端口sk1.bind(('127.0.0.1', 8001))#监听sk1.listen()#定义一个字典存放客户端发送的信息message_dict = {}#inputs用于存放socket对...

weixin_39685762的博客 77

python select模块 tcp服务器_Python基于select实现的socket服务器

本文实例讲述了Python基于select实现的socket服务器。分享给大家供大家参考,具体如下:借鉴了asyncore模块中select.select的使用方法import socketimport tracebackimport selectEOL1 = b'\n\n'EOL2 = b'\n\r\n'socketmap = {}r,w,e = [],[],[]response = b'HTT...

weixin_39609483的博客 132

python 高并发 select socket_python--select多路复用socket

server:import selectimport socketimport sysimport queueimport os#create a TCP/IP socketserver = socket.socket(socket.AF_INET,socket.SOCK_STREAM)server.setblocking(False)#Bind the socket to the portser...

weixin_39553776的博客 99

python select函数_python socket编程之select

#!/usr/bin/envpython#_*_coding:utf-8_*___author__='WangQiaomei'importselectimportsocketimportsysimportQueue#CreateaTCP/IPsocket'''第1步是创建socket对象。调用socket构造函数。socket=socket.socket(familly,type)f...

weixin_39641450的博客 267

python socket select 一对多_Python之基于socket和select模块实现IO多路复用

'''IO指的是输入输出,一部分指的是文件操作,还有一部分网络传输操作,例如soekct就是其中之一;多路复用指的是利用一种机制,同时使用多个IO,例如同时监听多个文件句柄(socket对象一旦传送或者接收信息),一旦文件句柄出现变化就会立刻感知到'''1、下面通过IO多路复用实现多人同时连接socket服务器这是服务端代码import socketsk1 = socket.socket()#sk...

weixin_39885412的博客 217

python socket sendto sendall_网络通信 Python Socket UDP Select

前言工作中遇到各种各样的网络通信。有MQTT和CoAP这样的物联网应用层协议,也有各种自定义的TCP或UDP协议。使用各种不同的计算机语言和框架开发网络通信,例如Java的Netty框架,C语言原始socket,Python Socket。各有各的使用场景,难易程度相差巨大。Netty上手困难,C语言编写复杂,Python Socket上手容易。长久以来,UDP通信一直被误解为一种不可靠的通信手段...

weixin_39777464的博客 386

python socket编程之select

引用:PythonSelect解析:http://www.cnblogs.com/alex3714/p/4372426.html引用:Python网络编程中的select和pollI/O复用的简单使用:http://www.cnblogs.com/coser/archive/2012/01/06/2315216.html引用:Pythonsocket编程http...

weixin_34321753的博客 1761

python socket epoll_python下的socket学习,包括select, epoll,kqueue

服务端:基本思路生成socket,绑定IP端口,listen后使用select或者kqueue管理链接是否可以读写操作。获得链接后,等待客户端输入,将从客户端收到的数据原样返回给客户端。实现基本的回显操作。服务端代码:select模式#coding=utf-8__author__='chenglp'"""socket,select,kqueue学习"""importsocketimpor...

weixin_39819661的博客 205

python之socket编程_python socket编程之select I/O

python socket编程之select I/O1. 概述select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符从而进行后续的读写操作。select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,事实上从现在看来,这也是它...

weixin_29599245的博客 494
上一篇: socket基础(c语言)
下一篇: websocket和tap使用select关联
linux内核控
博客等级 码龄19年 41粉丝 638原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值