![](/img/trans.png)
[英]Accessing a socket coded using python TCPServer from outside (external machine)
[英]Accessing python web server from external machine
我在Ubuntu上运行的python Web服务器的可见性/可访问性遇到问题。 服务器代码如下:
#!/usr/bin/python
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
PORT_NUMBER = 8899
#This class will handles any incoming request from
#the browser
class myHandler(BaseHTTPRequestHandler):
#Handler for the GET requests
def do_GET(self):
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
# Send the html message
self.wfile.write("Hello World !")
return
try:
#Create a web server and define the handler to manage the
#incoming request
server = HTTPServer(('', PORT_NUMBER), myHandler)
print 'Started httpserver on port ' , PORT_NUMBER
#Wait forever for incoming htto requests
server.serve_forever()
except KeyboardInterrupt:
print '^C received, shutting down the web server'
server.socket.close()
它调用本地使用curl下面的命令作品 -我收到的“Hello World”的答案。
curl {externalIP}:8899
在浏览器中打开地址(即Chrome)失败!
http://{externalIP}:8899/
ufw状态为无效
iptables如下
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:8765
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Ubuntu已安装apache2服务器并使用Web浏览器打开html文件,外部ip和端口80在上面的服务器上正常工作...
有什么想法我还能检查吗?
我认为您可能正在监听回送接口,而不是连接到互联网的那个。
指定IP或使用:
server = HTTPServer(('0.0.0.0', PORT_NUMBER), myHandler)
指定监听所有的网络接口。
删除阿帕奇解决了这种情况。 我不知道为什么,因为它应该阻塞端口80,但是在此之后它现在可以工作:
apt-get remove apache2*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.