socketserver 并发连接
2024-08-29 09:44:10
-
-
socketserver.TCPServer
Exampleserver side
12345678910111213141516171819202122232425262728import
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
123456789101112131415161718192021import
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端做一下更改就可以了
把
1server
=
socketserver.TCPServer((HOST, PORT), MyTCPHandler)
改成
1server
=
socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)
-
最新文章
- Xcode 8.1 : Unable to read from device
- 一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合.
- 浅谈ClickableSpan , 实现TextView文本某一部分文字的点击响应
- HibernateTools实现pojo类 数据库schma mapping映射的相互转换
- GSS7 spoj 6779. Can you answer these queries VII 树链剖分+线段树
- 基于SMB协议的共享文件读写 博客分类: Java
- 转Struts 权限控制
- 【暑假】[实用数据结构]范围最小值问题(RMQ)
- KMP算法简单回顾
- Android与js交互实例
- windows server 2008 R2之取消多余的安全配置
- coursera吴恩达 机器学习编程作业原文件 及我的作业
- 学习笔记-AngularJs(五)
- ORACLE SQL Developer日期显示格式不全
- 初级字典树查找在 Emoji、关键字检索上的运用 Part-3
- The required Server component failed to start so Tomcat is unable to start问题解决
- s21day25 python笔记
- netty总结
- Arm Cache学习总结
- mybatis 动态sql语句(2)