Das ist ein Problem. Meine primäre Arbeit ist: Liefern "s" Objekt zu "Handle" -Methode in der TestRequestHandler-Klasse. Mein erster Schritt war: liefern "s" Objekt durch "Punkt" -Methode zu TestServer-Klasse, aber hier bin ich fest. Wie "s" Objekt zu TestRequestHandler zu liefern? Einige Vorschläge?Wie eine Instanz des Objekts an die Instanz von SocketServer.BaseRequestHandler übergeben wird?
import threading
import SocketServer
from socket import *
class TestRequestHandler(SocketServer.BaseRequestHandler):
def __init__(self, request, client_address, server):
SocketServer.BaseRequestHandler.__init__(self, request, client_address, server)
return
def setup(self):
return SocketServer.BaseRequestHandler.setup(self)
def handle(self):
data = self.request.recv(1024)
if (data):
self.request.send(data)
print data
def finish(self):
return SocketServer.BaseRequestHandler.finish(self)
class TestServer(SocketServer.TCPServer):
def __init__(self, server_address, handler_class=TestRequestHandler):
print "__init__"
SocketServer.TCPServer.__init__(self, server_address, handler_class)
return
def point(self,obj):
self.obj = obj
print "point"
def server_activate(self):
SocketServer.TCPServer.server_activate(self)
return
def serve_forever(self):
print "serve_forever"
while True:
self.handle_request()
return
def handle_request(self):
return SocketServer.TCPServer.handle_request(self)
if __name__ == '__main__':
s = socket(AF_INET, SOCK_STREAM)
address = ('localhost', 6666)
server = TestServer(address, TestRequestHandler)
server.point(s)
t = threading.Thread(target=server.serve_forever())
t.setDaemon(True)
t.start()
Ich bin verwirrt. Ihr Server öffnet einen Socket auf localhost: 6666. Was ist dieser andere Socket, den du erstellst und den du "zeigen" willst? Soll das ein Client-Socket zum Testen sein? –
Ich bin auch ein wenig verwirrt. Mit "liefern" meinen Sie die Inter-Thread-Kommunikation? Oder versuchen Sie, einen Remote-Prozedur-Aufruf durchzuführen, indem Sie das Objekt über die Leitung an den Server senden? Ich gestehe, ich verstehe nicht, was du mit "Punkt" meinst. –