欢迎来到山村网

用Python实现一个简单的多线程TCP服务器的教程

2019-03-02 12:23:07浏览:713 来源:山村网   
核心摘要:  这篇文章主要介绍了用Python实现一个简单的多线程TCP服务器的教程,示例的运行环境为Windows操作系统,需要的朋友可以参考下 

  这篇文章主要介绍了用Python实现一个简单的多线程TCP服务器的教程,示例的运行环境为Windows操作系统,需要的朋友可以参考下

  最近看《python核心编程》,书中实现了一个简单的1对1的TCPserver,但是在实际使用中1对1的形势明显是不行的,所以研究了一下如何在server端通过启动不同的线程(进程)来实现每个链接一个线程。

  其实python在类的设计上已经考虑到了这一方面的需求,我们只要在自己的server上继承一下SocketServer.baseRequestHandler就可以了。

  server端代码如下:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env python import SocketServer from time import ctime HOST = '' PORT = 21567 ADDR = (HOST, PORT) class MyRequestHandler(SocketServer.baseRequestHandler): def handle(self): print '...connected from:', self.client_address while True: self.request.sendall('[%s] %s' % (ctime(),self.request.recv(1024))) tcpServ = SocketServer.ThreadingTCPServer(ADDR, MyRequestHandler) print 'waiting for connection...' tcpServ.serve_forever()

  客户端代码如下(基本和书中一模一样,只是把循环中的关闭链接注释掉了):

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/usr/bin/env python from socket import * HOST = 'localhost' PORT = 21567 BUFSIZ = 1024 ADDR = (HOST, PORT) while True: tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR) data = raw_input('> ') if not data: break tcpCliSock.send('%srn' % data) data = tcpCliSock.recv(BUFSIZ) if not data: break print data.strip() #tcpCliSock.close()

  从客户端的代码可以看出,每次输入都会建立一次新的请求。

  测试一下,启动server和client之后,在client中输入测试:

201555114612673.png (434×234)
201555114637991.png (438×202)
(责任编辑:豆豆)
下一篇:

Python闭包实现计数器的方法

上一篇:

Python实现方便使用的级联进度信息实例

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com