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
[46280] Re:Re:TServerSocket 에서요..
흑태자 [incu76] 1086 읽음    2006-08-23 15:56
강재호.만해 님이 쓰신 글 :
: 흑태자 님이 쓰신 글 :
: : 여전히 빌더 예제 프로그램인 chat과 강좌에 있는 소켓 프로그래밍을 붙잡고 씨름을 하고 있습니다 ^^;;
: :
: : TServerSocket을 이용해서 서버를 운영하는 프로그램을 만들때 OnClientRead나 OnAccept 이벤트 등이 발생할때
: : chat 예제 프로그램에서는 Socket->RemoteAddress 나 Socket->ReceiveText 등으로 사용을 하던데요
: : 전 이게 폼을 닫을때 Form1->Close() 이것을 그냥 Close()라고 표현하는것과 같은 표현인줄 알았습니다
: : 그래서 Socket->ReceiveText 이것도 ServerSocket1->Socket->ReceiveText 이것과 동일한 것인줄 알고 있었죠
: :
: : 그런데 저런 이벤트가 발생할때 파라메터로 넘어오는데에 TCustomWinSocket *Socket 이라는.. 이벤트가 발생한
: : 소켓의 포인터가 넘어오더군요.
: : 그렇다면 서버에 접속한 클라이언트가 여럿일 경우 이벤트가 발생했을때 어떤 클라이언트인지 알아볼수 있는 요소가
: : Socket 이라는 것을 알았습니다.
: : 그러면 ServerSocket1->Socket 에서 사용하는 이 Socket는 어떤 소켓입니까? 동일한게 아닌가요?
: :
: : 그리고 연장선에 있는 질문인데 ServerSocket1->Close() 하고 ServerSocket1->Socket->Close() 이것도 다른 의미겠죠?
: : 어떻게 다른지 궁금합니다.
:
: 안녕하세요 만해입니다.
:
: ㅋㅋ
:
: 제가 기억 하는 바로는 TServerSocket은 하나의 시작 지점으로 클라이언트의 접속을 기다리는 대기점이고요
:
: TServerSocekt->Socekt은 클라이언트가 접속 했을때
:
: 서버에서 관리를 위해 각각 개별 클라이언트별 소켓을 생성 할당 하여 데이타 전송이나 그외 다른 작업을
:
: 수행합니다. 그러니깐 클라이언트와 직접적인 통신을 하는 소켓이죠
:
: 강좌란에 TServerSocket, TClientSocket 강좌가 있으니 참고 하세요~
:
: PS. 나중에 퇴근후에 보충해서 다시 올릴께요~

일단 무슨 얘기인지는 알겠습니다. 강좌란에 있는 그 강좌가.. 5개인가로 되어 있는 소켓강좌라면 이미 읽었구요..
그래서 클라이언트가 하나씩 접속할때마다 소켓을 하나씩 개별 생성한다는 것도 알겠습니다.

제가 궁금한걸 정확히 다시 말씀을 드려야 하는건지..
TServerSocket->Socket->ReceiveText 하고 Socket->ReceiveText하고 뭐가 다른거죠?

소켓 관련 이벤트가 발생했을때는 파라메터로 인자가 넘어오기 때문에 Socket->ReceiveText 만으로 데이터를
읽어오는게 가능하다는걸 알겠는데..
만약에 이벤트 프로시져..흠.. 이벤트 처리 함수라고 해야하나.. 그 밖에서는 그냥 Socket->ReceiveText 만으로는
읽을수 없고 TServerSocket->Socket->ReceiveText 라고 해야하는거 아니냐..이겁니다.
그렇다면 여러개의 클라이언트가 붙어있을때 과연 어떤 소켓에 데이터가 들어와 있는지 알고 그 데이터를 읽어오죠?

강좌에 보면 TServerSocket->Socket->Connections[i]->SendText("Hello"); 요런게 있더군요
이거라면 접속되어 있는 클라이언트를 구분해서 데이터를 보내기도 한다는 건데..
읽을때도 그럼 TServerSocket->Socket->Connections[i]->ReceiveText("Hello"); 이렇게도 되네요. 보니까..-_-;;

그런데 또??
TServerSocket->Socket->Connections[i]->ReceiveText(" "); //요런건 되는데
앞에 TServerSocket 을 뺀 상태에서는 Socket->Connections 이 명령이 듣질 않네요?

그림 위에 다시 질문한건 다 제쳐두고.. 뭐 어차피 비슷한 질문이기는 하지만..

이벤트가 발생한 상태에서
TServerSocket->Socket과 Socket 의 차이점은 무엇인가요?

+ -

관련 글 리스트
46258 TServerSocket 에서요.. 흑태자 1159 2006/08/22
46279     Re:TServerSocket 에서요.. 강재호.만해 1200 2006/08/23
46280         Re:Re:TServerSocket 에서요.. 흑태자 1086 2006/08/23
46295             Re:Re:Re:TServerSocket 에서요.. 공부맨 2056 2006/08/24
46296                 감사합니다 ^^ 흑태자 929 2006/08/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.