- 浏览: 1477879 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
上接
c语言的socket基础http://haoningabc.iteye.com/blog/2305026
使用python
一言不合上代码
server.py
客户端
client.py
代码效果一样
accept阻塞等待客户端
一个客户单就会建立一个c(connection)
最终服务端会变成
一个socket和多个connection
但是还是有顺序,阻塞问题
换上select解决阻塞
每次accept第一次阻塞完成取得connection后,就放到一个select监控数组里面
下一次循环的时候进入recv阻塞
使
所有的connection都变成recv
最终,任何一个client有数据接收都会马上收到相应,不会阻塞到某一个连接上,
相当于同时开了多个connection
一个好玩的tunproxy,使用select写的
http://www.secdev.org/projects/tuntap_udp/
把tun设备和socket用select关联起来
http://www.secdev.org/projects/tuntap_udp/files/tunproxy.py
c语言的socket基础http://haoningabc.iteye.com/blog/2305026
使用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写的
http://www.secdev.org/projects/tuntap_udp/
把tun设备和socket用select关联起来
http://www.secdev.org/projects/tuntap_udp/files/tunproxy.py
发表评论
-
xl2tp 备份
2019-09-24 16:25 6942019年9月24日更新: 注意,需要开启firewall ... -
sdl笔记
2019-01-31 17:19 733sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1433参考https://bellard.org/jslinux/t ... -
建立tap设备的c的代码
2019-01-08 19:09 474tapper.c #include <stdio.h& ... -
jslinux总结帖
2019-01-04 21:33 1134注意个问题: chrome不要用两个tab页,否则ping不通 ... -
br0和tap0的互相影响
2019-01-02 19:17 815转载 http://www.cnblogs.com/wlei/ ... -
aws搭建xl2tp给iphone使用
2018-12-26 21:37 18922019年12月26日 可以参考原来的配置 https:// ... -
consul的基本使用
2017-06-27 11:13 1402### 安装 [centos7上consul的安装](ht ... -
lvs的helloworld
2017-06-13 20:36 597###################lvs######### ... -
系统调用的helloworld
2017-05-04 16:14 634《2.6内核标准教程》 p293 #include < ... -
bitcoin和cgminer的安装
2017-04-05 22:45 1959参考 http://blog.csdn.net/rion_ch ... -
ceph安装和常用命令
2017-03-21 21:55 953/etc/hosts ssh-keygen ssh-copy- ... -
jslinux-deobfuscated-network
2017-02-13 22:37 714基础知识 查看网络包 tcpdump -i eth0 -e ... -
mobile terminal 笔记
2016-12-02 15:35 626找出旧的iphone4 越狱之后可以变个小操作系统 mobi ... -
Tunnels with iproute2
2016-11-14 15:22 585copy from http://members.ferrar ... -
qemu用tap方式启动vm的网络试验(ip route)
2016-09-14 11:29 2806ip route add 192.168.8.0/24 via ... -
socket的方式使用qemu建立虚拟机
2016-06-24 17:54 1910qemu的-net参数 -net nic 必须有,基本配置mo ... -
tap的方式使用qemu建立虚拟机NAT网络
2016-06-23 18:03 9850基本概念: vm:虚拟机 ... -
qemu用nat的方式使用tap建立虚拟机
2016-06-23 16:15 11普通桥接参考 http://haoningabc.iteye. ... -
tap的方式使用qemu建立虚拟机桥接网络
2016-06-22 20:53 7838需求:建立一个虚拟机,使网络和内网一样,当一台普通接入内网的服 ...
相关推荐
在Python标准库中,socket是进行网络通信的基础,通过它我们可以实现客户端和服务端的通信、数据传输等功能。此外,我们还会涉及select、asyncore、asynchat等高级网络编程模块的应用,这些模块能够帮助开发者更高效...
在Python编程领域,Socket是用于网络通信的一种基础模块,它允许程序通过网络发送和接收数据。在这个项目中,我们利用Python的socket库构建了一个石头剪刀布(RPS,Rock-Paper-Scissors)游戏,同时结合了MySQL...
总结来说,这个Python聊天室程序展示了如何使用`socket`模块和`select`函数实现基本的网络通信功能,特别是服务端如何处理多个并发的客户端连接。通过学习和理解这个示例,开发者可以进一步掌握Python在网络编程中的...
import select# import signal#用于捕获中断信号 import cPickle#将python对象进行序列化:dumps将python对象序列化保存为字符串,loads与之相反 from socket import * HOST = '' def send(channel,*args):#发送数据 ...
本文将详细介绍如何利用Python中的`select`模块来实现一个简单的Socket服务器,并深入探讨其工作原理和应用场景。 #### 二、基础知识回顾 1. **Socket简介**: - Socket是网络编程的基础,它为应用程序提供了网络...
Python 中的 Socket 编程 说明 译者注 授权 开始 Socket API 概览 TCP Sockets 客户端 / 服务器echo 程序 echo 程序的服务端 echo 程序的客户端 运行echo 程序的客户端和服务端 查看 socket 状态 通信流程的分解 ...
Python 提供了多种网络编程库,包括 Socket 库、select 库、Twisted 库等。其中,Socket 库是最基础的网络编程库。 二、Socket 库 Socket 库是 Python 中的网络编程库之一,提供了基本的网络通信功能。Socket 库...
Python 中有多种 socket 编程库,例如 socket 库、select 库等。这些库提供了不同的 socket 编程接口,方便开发者快速实现网络服务。 Python 网络编程的应用非常广泛,例如网络爬虫、网络游戏、社交媒体等。 ...
在Python编程中,处理并发的网络连接通常会涉及到I/O多路复用技术,这里主要讲解的是使用`select.epoll()`来实现socket并发处理的方法。`epoll`是Linux内核提供的一种高效I/O事件通知机制,适用于大量并发连接的情况...
Python的socket库是进行网络通信的基础模块,它允许程序员创建自定义的网络协议,包括TCP(传输控制协议)和UDP(用户数据报协议)等。在这个案例中,我们有两个文件,`soc_server.py`和`soc_client.py`,分别代表...
在深入了解 Python 的 `socket` 模块之前,我们先来回顾一下网络通信的基础概念。 ##### 1.1 Internet通信 互联网上的通信主要依赖于 IP 协议和 TCP/UDP 协议。IP 协议负责将数据包从一个主机发送到另一个主机,而...
本项目主要关注于Python中的网络编程(Socket)和数据库操作(DB)两大方面。通过开源的方式,帮助开发者更好地理解和应用Python进行数据处理和网络交互。 ### 描述:Python_DB__SOCKET开源,主要针对数据的操作和...
客户端由于select在Windows下只能对socket使用,所以使用了多线程来实现对客户端输入和socket连接的同时监控。注意这里的socket设置为了非阻塞。这样就实现了在一个线程中同时进行socket的接收和发送。 服务器代码:...
* 通用性:HP-Socket 提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口,支持 Windows 和 Linux 平台。 HP-Socket 是一个功能强大、易用、高性能的通信框架,非常适合于各种不同应用场景的 TCP/...
第 23 章 python 实现 select 和 epoll 模型 socket 网络编程 第 24 章 对 Python-memcache 分布式散列和调用的实现 第 25 章 Parallel Python 实现程序的并行多 cpu 多核利用【pp 模块】 第 26 章 关于 python ...
1. **初始化设置**:首先导入必要的库`socket`和`select`,并定义服务器的IP(此处为空字符串代表所有可用的网络接口)和端口号7799。同时,创建两个空列表`inputs`用于存储输入流的套接字和`members`用于存储已连接...
在Python中,还有一些高级的socket功能,如套接字选项(socket options)、多路复用(如select和poll)、套接字超时等,它们可以用来优化网络程序的性能和处理复杂情况。 最后,`Python自学教程-05-socket的介绍.ev...
### Socket编程基础知识点 #### 一、网络通信与Socket概念 - **Socket**:在网络通信中,Socket(套接字)是一种用于不同主机之间或同一主机上不同进程间通信的抽象概念。它允许应用程序通过网络进行通信,是TCP/...
在 Python 中,创建一个套接字对象通常通过 `socket.socket()` 函数来完成。这个函数接受两个参数:地址族和套接字类型。常用的地址族包括 `AF_INET`(用于 IPv4 地址)和 `AF_INET6`(用于 IPv6 地址)。套接字类型...