带有线程的Python socketserver或套接字

时间:2016-06-07 21:17:24

标签: python multithreading sockets server connection

我是模块套接字的新手,我正在学习如何实现它。我目前已经编写了这个基本服务器。

import socket               

s = socket.socket()         
host = "Some IP" 
port = 12345                
s.bind((host, port))        

print "Setting up server on", host + ":" + str(port)

s.listen(5)                 

while True:
    c, addr = s.accept()     

    print 'Got connection from', addr
    c.send('Thank you for connecting.')
    print c.recv(1024)

c.close() 

但是,我意识到这台服务器一次只能处理一个客户端。为了进一步培训,我想一次处理多个客户。所以我做了一个研究,偶然发现了图书馆SocketServer。我还听说过线程化常规套接字模块的方法,所以每个新连接都会创建一个新线程。我发现的信息还不够。请帮助我理解我发现的这两种方法之间的区别以及在哪里使用哪种方法。

提前致谢。

1 个答案:

答案 0 :(得分:1)

套接字库是非常低级的,你真的必须自己实现大多数东西。

SocketServer更高级。它在内部使用套接字库,并提供一个简单的界面,允许您一次处理多个客户端,并且您不必担心使用套接字所涉及的整个低级别内容。

查看此处的示例,并将它们与您自己的代码进行比较。你可能会看到差异。 https://docs.python.org/2/library/socketserver.html#examples