我预计同一端口上有多个服务器会导致问题。事实上,当我尝试在同一端口上启动两个服务器时,我希望它抛出异常。问题是,它似乎非常乐意在同一端口上启动多个服务器。我可以让以下代码的许多实例运行得很好,没有异常。
import BaseHTTPServer
import SimpleHTTPServer
import sys
def main():
try:
server = BaseHTTPServer.HTTPServer(('127.0.0.1',5000), SimpleHTTPServer.SimpleHTTPRequestHandler)
print "On port: " + str(server.socket.getsockname()[1])
except Exception, e:
print e
server.serve_forever()
if __name__ == "__main__":
main()
所有这些都声称位于端口 5000 上。如果它尝试使用已占用的端口,我怎样才能让它抛出异常?
编辑:这是Python 2.6.4
编辑2:http://www.youtube.com/watch?v=rVOG3JdbHAM&feature=youtu.be因为人们似乎认为我所解释的事情不可能?或者我完全误解了人们。不管怎样,这段视频应该可以澄清这一点。我启动了两台服务器,它们都没有打印出任何异常。当我关闭第一个时,第二个开始工作。为什么会发生这种情况?我希望第二个服务器永远不会启动并打印异常。这不是应该发生的事吗?
最佳答案
我尝试执行您的代码,第二个实例返回,
[Errno 98] Address already in use
理应如此。 SuSE Linux 上的 Python 2.6。
可以使用netstat实用程序检查端口5000是否真的被占用?
关于python - 我可以将多个服务器绑定(bind)到同一个 TCP 端口吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11570290/