|
아 오늘도 소켓통신으로 다시 질문을 올립니다. 고수님들의 조언을 부탁드립니다.....
A <-> Server PC <-> B 와 같은 구조에서 ............
사실 A(Client) <-> B(Server)의 구조인데 A, B 간의 직접 통신이 불가능하여 Server PC를 중간에 넣었습니다....
이것의 기능은 A의 데이타를 받아서 B로 그대로 전달하고 B의 데이타를 받아서 A로 전달하는 프로그램입니다.
문제는 A는 여러개의 Client가 실행되거나 여러 사람들이 동시에 접속할 수 있습니다.
B는 한개의 데몬 프로그램이 돌고 있습니다.
A와 B의 프로그램은 수정할 수 없는 프로그램들이다 보니 Server PC의 전달 프로그램이 A에서 B로 접속하기 위한
동일 포트를 사용하는 TServerSocket *ServerSocket을 하나 선언하고 각 사용자의 Client에서 전달되는 요구를 수용하기 위하여
TClientSocket ClientSocket[10]을 사용하였습니다... (최대 10명을 수용하기 위해서 입니다.)
그런데 문제는 ServerSocket->Socket->Connection[0]과 ClientSocket[0]을 매핑 시키느냐 입니다.
void __fastcall TForm1::ServerSocketClientRead(TObject *Sender,TCustomWinSocket *Socket)에서
Q1)
ServerSocket->Socket->Connection[int INDEX]가 TCustomWinSocket *Socket로 호출되는 것 같은데 INDEX를 어떻게 알아내느냐는 것입니다.
또한
Q2)
A쪽의 Client가 빈번히 접속되었다가 접속이 끊기곤 하는데 ServerSocket->Socket->Connection[int INDEX]를 호출할때 Client가 접속을 끊지 않은 상태라면
계속 INDEX가 유지되지 않고 바뀌는것 같던데 ServerSocket->Socket->Connection[int INDEX]와 ClientSocket[int IDX]에서 INDEX와 IDX를 유지할 수 있는 방법은 없습니까 ?
Q3)
이외의 다른 방법으로 해결할 수 있는 방법은 없습니다.
고수님들의 조언을 부탁드리겠습니다.
그럼 즐거운 저녁 시간되시기를 ....
|