これは問題です。 私の主な仕事は、TestRequestHandlerクラスの "handle"メソッドに "s"オブジェクトを渡すことです。 私の最初のステップは、 "ポイント"メソッドを通して "TestServer"クラスに "s"オブジェクトを渡しましたが、ここで止まってしまいました。 "s"オブジェクトをTestRequestHandlerに渡す方法は?いくつかの提案?SocketServer.BaseRequestHandlerのインスタンスにオブジェクトのインスタンスを渡す方法?
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()
私は混乱しています。あなたのサーバはlocalhost:6666上のソケットをオープンしています。あなたが作成している "ポイント"をしようとしているこの他のソケットは何ですか?それはテストのためのクライアントソケットであるはずですか? –
私はちょっと混乱しています。 "提供する"とは、スレッド間通信を指していますか?または、リモートプロシージャコールを作成しようとしていますか?ワイヤでサーバにオブジェクトを送信していますか?私はあなたが "ポイント"を意味するものを理解していないと告白します。 –