이것은 문제입니다. 나의 주요 연구 대상은 "TestRequestHandler"클래스의 "handle"메소드에 "s"객체를 전달하는 것이다. 첫 번째 단계는 "point"메서드를 통해 "Test"클래스에 "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에서 소켓을 여는 중입니다. 당신이 만들고있는 "소켓"이란 무엇입니까? 그게 테스트를위한 클라이언트 소켓이되어야합니까? –
나는 또한 약간 혼란 스럽다. "전달"이란 스레드 간 통신을 말하는 것입니까? 아니면 원격 프로 시저를 호출하려고합니까? 객체를 서버로 전송합니다. 나는 당신이 "요점"을 의미하는지 이해하지 못한다고 고백합니다. –