안녕하세요.
Port Redirection을 구현하는 프로그램을 짤려고 하는데요..
일단 클라이언트가 특정 서버에 접속하면 그 서버는 아무일도 하지 않고 다른 포트로
연결을 해줍니다.
즉..
+--------------------+
+--------| Port Redirector |
| +--------+-----------+
+------------------+ 1.접속 |
| |
+---+----+ |
| Client |-------------------------------+
+---+----+ 2. PortRedirector가 새로운 포트를 할당.
|
| +-----------------+
+---------------------------| Server1 :1001 |
3.할당받은 포트에 접속 +-----------------+ 각 포트마다
..... 서버가 존재.
+-----------------+
| Server n:1000+n|
+-----------------+
의 방법을 사용할려고 합니다. Port Redirection을 하는 서버는 한개..
그리고 실제적으로 데이터를 처리하는 서버는 n개의 서버를 둘려고 합니다.
처음에 구현하려고 했던 방법은 일단 접속이 되면 PRS(Port Redirection Server)로
부터 포트를 할당받고 Client에서 소켓을 끊고(OnRead 에서 cs.active := false)
tmp := sktC.Socket.ReceiveText;
bPortRedirect := True;
sktC.Active := False;
sPort := strtoint(tmp);
sktC.Active := True;
위의 소스대로 했는데 잘 안 되는것 같습니다.커넥션을 client에서 끊죠..
음.. 그 다음으로 생각한 것이.. Server에서(PRS)에서 소켓을 끊는 방법도 생각해
봤구요..
소켓을 끊을려면 어디에서 끊는 것이 가장 좋은지 알고 싶습니다.
가령..제가 첨짠 소스에서는 OnRead Event를 처리하는 도중에 소켓을 끊었다가
다시 소켓을 연결하는데 OnDisconnect Event에서 다시 Active := True로 설정할
수 있는지요..
델파이로 소켓 프로그래밍은 처음이라.. 어떻게 해야할지 잘 모르겠습니다.
어떤 방법이 효율이 좋은지 조언을 구합니다.
그럼..