C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[13692] [질문] Server Socket 접속시 Port 중복 할당 문제
김종현 [] 1429 읽음    2001-12-16 04:18
안녕하세요. 급히 해결해야 할 문제가 있어서 질문 드립니다.

TServerSocket을 통해서 TCP 접속을 하고 있습니다. 현재 이기종간의 접속을 하고 있는데,
Client쪽 Adapter가 오로지 전원 인가 즉시 접속(Connect)만 있고 접속해제(Disconnect)가
없습니다. 참고적으로 사용중인 Adapter는 Serial to TCP 에 사용되는 사용 제품입니다.

그러다보니, 자주 재접속하기때문에 시체 소켓들이 종종 생깁니다. 이 부분은 주기적으로
데이터를 뿌리면서 해결 했는데, 문제는 동시에 여러 Adapter를 통해서 Server Socket의
TCP 서비스를 제공하다 보면, 동시에 한 포트에 여러개의 Adapter가 물린다는 것이죠.

참고적으로 내용을 직관적으로 보실수 있도록 코드 및 실행화면을 알려 드립니다.

//---------------------------------------------------------------------------
void __fastcall TForm_Main::Timer1Timer(TObject *Sender)
{
     // Check Logic
     AnsiString     Str;
     Memo1->Lines->Clear();
     Memo1->Lines->Add("Connected Socket");
     Memo1->Lines->Add("----------------------------------------");

     for (int i = 0; i < ServerSocket->Socket->ActiveConnections; i++)
     {
          Str  = "Socket[";
          Str += i;
          Str += "] : IP -> ";
          Str += ServerSocket->Socket->Connections[i]->RemoteAddress;
          Str += ", Port -> ";
          Str += ServerSocket->Socket->Connections[i]->RemotePort;

          Memo1->Lines->Add(Str);
     }

     Memo1->Lines->Add("----------------------------------------");
     Str  = "Total ActiveConnections = ";
     Str += ServerSocket->Socket->ActiveConnections;

     Memo1->Lines->Add(Str);
}
//---------------------------------------------------------------------------

다음은 실행 화면입니다.

Connected Socket
----------------------------------------
Socket[0] : IP -> 152.149.138.14, Port -> 25058
Socket[1] : IP -> 152.149.138.23, Port -> 11433
Socket[2] : IP -> 152.149.138.2, Port -> 1772
Socket[3] : IP -> 152.149.138.13, Port -> 25058
Socket[4] : IP -> 152.149.138.20, Port -> 22289
Socket[5] : IP -> 152.149.138.2, Port -> 1773
-------------------------------------
Total ActiveConnections = 6

위에처럼 IP 152.149.138.13, 14번은 포트가 동시에 25058포트로 할당이
되었습니다. 현재 몇가지 테스트 중에 있는데, 혹시라도 경험있으신 분들의
조언을 얻고 싶어서 글을 올립니다. 실제 현 시스템에서는 IP당 하나의 접속
으로 제한되 있어서 접속된 IP를 가지고 소켓을 구분하면 가능하지만,
다른 방법으로 소켓의 포트 할당이 중복되는 현상을 해결할 수 있다면
알려 주시면 감사하겠습니다.

읽어 주셔서 감사합니다. 김 종 현 드림.

+ -

관련 글 리스트
13692 [질문] Server Socket 접속시 Port 중복 할당 문제 김종현 1429 2001/12/16
13704     Re:[질문] Server Socket 접속시 Port 중복 할당 문제 정남영 6166 2001/12/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.