socketserver 并发连接

socketserver.TCPServer Example

server side


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

import socketserver

class MyTCPHandler(socketserver.BaseRequestHandler):

    """

    The request handler class for our server.

    It is instantiated once per connection to the server, and must

    override the handle() method to implement communication to the

    client.

    """

    def handle(self):

        # self.request is the TCP socket connected to the client

        self.data = self.request.recv(1024).strip()

        print("{} wrote:".format(self.client_address[0]))

        print(self.data)

        # just send back the same data, but upper-cased

        self.request.sendall(self.data.upper())

if __name__ == "__main__":

    HOST, PORT = "localhost"9999

    # Create the server, binding to localhost on port 9999

    server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)

    # Activate the server; this will keep running until you

    # interrupt the program with Ctrl-C

    server.serve_forever()

client side


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

import socket

import sys

HOST, PORT = "localhost"9999

data = " ".join(sys.argv[1:])

# Create a socket (SOCK_STREAM means a TCP socket)

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:

    # Connect to server and send data

    sock.connect((HOST, PORT))

    sock.sendall(bytes(data + "\n""utf-8"))

    # Receive data from the server and shut down

    received = str(sock.recv(1024), "utf-8")

finally:

    sock.close()

print("Sent:     {}".format(data))

print("Received: {}".format(received))

上面这个例子你会发现,依然不能实现多并发,哈哈,在server端做一下更改就可以了


1

server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)

改成


1

server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)

来自为知笔记(Wiz)

时间: 2024-11-07 19:56:00

socketserver 并发连接的相关文章

C#多线程环境下调用 HttpWebRequest 并发连接限制

.net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 windows xp , windows 7 下默认是2,在服务器操作系统上默认为10. 如果不修改这个并发连接限制,那么客户端同时可以建立的 http 连接数就只有2个或10个.对于一些诸如浏览器或网络蜘蛛的应用,2个或10个并发数量实在太少,大大影响应用的性能.之所以有这个并发连接限制,是因为 http 1.0 和 http 1.1 标准规定并发连接数最大为2. 不

Nginx并发连接限制

转载自:http://www.abc3210.com/2013/web_04/82.shtml HttpLimitReqModul用来限制单位时间内连接数的模块,使用limit_req_zone和limit_req指令配合使用来达到限制.一旦并发连接超过指定数量,就会返回503错误. HttpLimitConnModul用来限制单个ip的并发连接数,使用limit_zone和limit_conn指令. 这两个模块的区别前一个是对一段时间内的连接数限制,后者是对同一时刻的连接数限制. http{

erlang如何有效监听大量并发连接

看了erlang的一些开源网络框架RabbitMQ.Ranch,他们都使用多个进程同时accept一个socket.这种方式在使得socket端口监听的工作分担了更多的调度机会,但是,在erlang中,socket接受一个新连接后,如果想让另一个进程处理消息,就要显式的调用gen_tcp:controlling_process(Socket, Pid). 所以问题来了,erlang多个进程同时监听一个socket安全吗? 这种方式在早期的erlang是不安全的,但R11B03 版本之后,erla

多线程环境下调用 HttpWebRequest 并发连接限制

.net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 windows xp , windows  7 下默认是2,在服务器操作系统上默认为10. 如果不修改这个并发连接限制,那么客户端同时可以建立的 http 连接数就只有2个或10个.对于一些诸如浏览器或网络蜘蛛的应用,2个或10个并发数量实在太少,大大影响应用的性能.之所以有这个并发连接限制,是因为 http 1.0 和 http 1.1 标准规定并发连接数最大为2.

千万并发连接实战

c10k,c100k,c1000k等问题大家都已经司空见惯,那么10m(千万)并发连接呢?今天就来一起挑战一下. 准备机器10m连接,大家的个人电脑肯定无法满足要求,如果不是在大公司任职,弄个实际的物理机对大家是个奢望.那么怎么办?我也面临同样问题.现在的云计算这么发达,还可以按小时计费,一小时的费用也就几元,那就试试云计算产品吧.小编先是在阿里云上测试,但阿里云的按需付费主机配置不高,费了不少时间,最终只跑到了3m个连接.阿里云的不行,是主机的配置问题还是程序的问题呢?为了得到最终的结论,我尝

单机千万并发连接实战

c10k,c100k,c1000k等问题大家都已经司空见惯,那么10m(千万)并发连接呢?今天就来一起挑战一下吧. 准备机器 10m连接,大家的个人电脑肯定无法满足要求,如果不是在大公司任职,弄个实际的物理机对大家是个奢望.那么怎么办?我也面临同样问题. 现在的云计算这么发达,还可以按小时计费,一小时的费用也就几元,那就试试云计算产品吧.小编先是在阿里云上测试,但阿里云的按需付费主机配置不高,费了不少时间,最终只跑到了3m个连接.阿里云的不行,是主机的配置问题还是程序的问题呢?为了得到最终的结论

大并发连接的oracle在Linux下内存不足的问题的分析

大并发连接的oracle在Linux下内存不足的问题的分析 2010-01-28 20:06:21 分类: Oracle 最近一台装有Rhel5.3的40G内存的机器上有一个oracle数据库,数据库的SGA设置为20G,当运行业务时,一个业务高峰期时,发现swap频繁交换,CPU 100%,Load很高,基本体现为内存不足.此时的连接数在600个左右.按内存的计算:每个连接占用内存基本在5M,这样600个连接只占用3G内存,SGA内存20G,操作系统占用内存1G,这样总占用的内存为24G,而总

httpclient的并发连接问题

昨天的搜索系统又出状况了,几个库同时重建索引变得死慢.经过一个上午的复现分析,确定问题出现httpclient的使用上(我使用的是3.1这个被广泛使用的遗留版本).搜索系统在重建索引时,是并发多个线程(默认是8个)不停的从PHP客户端取数据(当然,从另一个角度来说,搜索系统是客户端,PHP端是服务端),取回后放到一个队列里由单独的一个或多个线程更新索引.在测试环境复现发现,对于一个请求,PHP端打印耗时是1-2秒,但搜索端打印在4-6秒.这种耗时差别也就两种可能性,一个是PHP端返回到搜索端接受

100万并发连接服务器笔记之Java Netty处理1M连接会怎么样

前言 每一种该语言在某些极限情况下的表现一般都不太一样,那么我常用的Java语言,在达到100万个并发连接情况下,会怎么样呢,有些好奇,更有些期盼.  这次使用经常使用的顺手的     netty NIO框架(netty-3.6.5.Final),封装的很好,接口很全面,就像它现在的域名   netty.io,专注于网络IO.  整个过程没有什么技术含量,浅显分析过就更显得有些枯燥无聊,准备好,硬着头皮吧. 测试服务器配置 运行在VMWare Workstation 9中,64位Centos 6