我一直在使用SocketServer.TCPServer和SocketServer.BaseRequestHandler基類來開發Python服務器。我使用主機「本地主機」和端口2304(沒有被任何其他程序使用)。Python SocketServer.BaseRequestHandler不會與遠程請求通信
問題是我的服務器不會響應遠程請求。我正在使用亞馬遜AWS,並有一個靜態IP地址用於訪問。
當我測試亞馬遜本地機器上的服務器使用例如。瀏覽器,我發現我的服務器確實是東西,但遠程訪問保持阻止狀態。不知道如何打開2304端口可以從外部本地機器訪問。
這裏是整個代碼:
import threading, socket
import SocketServer, Queue
import globals
import transaction_pool
class CTSRSThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
if globals.terminating:
self.Respond("")
pCurrThread = threading.currentThread()
sData = self.request.recv(8192)
print "CTSRSThreadedTCPRequestHandler->RECV->OK!"
sResponse = "OK!"
self.Respond(sResponse)
print "CTSRSThreadedTCPRequestHandler->SEND->OK!"
#-------------------------------------------------------------------------
def Respond(self, sResponse):
self.request.send(sResponse)
#-------------------------------------------------------------------------
class CTSRSThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
allow_reuse_address = True
class CTSRSServer:
m_pServerThread = None
m_pServer = None
#----------------------------------------------------------
def StartServer(self):
try:
self.m_pServer = CTSRSThreadedTCPServer(("localhost", 2304), CTSRSThreadedTCPRequestHandler)
sIP, iPort = self.m_pServer.server_address
self.m_pServerThread = threading.Thread(target = self.m_pServer.serve_forever)
self.m_pServerThread.daemon = True
self.m_pServer.daemon_threads = True
self.m_pServerThread.start()
globals.system_log.info("[CTSRS]->StartServer()")
except Exception, e:
globals.system_log.info("[CTSRS]->StartServer() -> Exception: " + str(e))
return False
return True
#----------------------------------------------------------
def StopServer(self):
globals.system_log.info("[CTSRS]->StopServer()")
#----------------------------------------------------------
我如何將它綁定到通用的「全接觸」接口? – StjepanV
感謝Pileborg先生!太棒了! – StjepanV