我是模块套接字的新手,我正在学习如何实现它。我目前已经编写了这个基本服务器。
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
库。我还听说过对常规套接字模块进行线程化的方法,因此每个新连接都会创建一个新线程。我找到的信息还不够。请帮助我理解我发现的这两种方法之间的区别以及在哪里使用哪一种。
提前致谢。
最佳答案
套接字库非常底层,您确实必须自己实现大多数事情。
SocketServer 更高级。它在内部使用套接字库,并提供了一个简单的接口(interface),允许您一次处理多个客户端,并且您不必担心使用套接字所涉及的整个低级内容。
查看此处的示例并将它们与您自己的代码进行比较。您可能会看到差异。 https://docs.python.org/2/library/socketserver.html#examples
关于Python 套接字服务器或带线程的套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37689518/