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
[5350] Re:소켓을 사용해서 메세지주고 받기.
홍용혁 [] 3035 읽음    2001-02-11 17:17
FEELHACK 님이 쓰신 글 :
: 클라이언트/서버 소켓을 사용해서.
:
: 채팅프로그램 처럼 컴퓨터간에 대화를 할수 있게 하려는데요.
:
: 클라1 --->  서버  ----> 클라2
:
: 이런 식으로 해야하나요?
: 아니면
:
: 클라1  ---->  클라2 
:
: 이렇게 직접으로도 메세지 주고 받는게 가능한지요.
:
: 아.--; 가장 중요한 소켓을 사용해서 메세지를 보내고 받는 방법부터 알아야겠네요.;;
:
: 도움말이 영어라 완벽하게 이해를 못해서인지 자꾸 에러도 나고.ㅡㅡ;
:
:

클라1 ---> 서버 ---> 클라2

이런식으로 합니다.

클라이언트가 서버에 접속하면 서버는 클라이언의 소켓핸들 리스트를 가지고 있습니다.

그리고 클라이언트 하나가 말을 하면 서버로 데이터를 보내겠죠.

그걸 받은 서버는 현재접속되어있는 클라이언트 소켓 핸들 리스트를 통해 모든 클라이언트에

그 데이터를 보내게 되겠죠.

근데 귓속말을 통해 특정 클라이언트에서 특정 클라이언트로 메세지를 보낼경우에는

어떻게 할까요. 이것도 마찬가지로 서버에서 가지고 있는

클라이언트 소켓핸들 리스트를 검사하여

해당 클라이언트에게만 메세지를 보내게 되겠죠.

그리고 그냥 하는 말인지 아니면 귓속말인지 아니면 다른 명령어인지를 구분하기위해

메세지를 자기나름대로 포맷을 해야 합니다.

예를 들어 메세지 헤더에는 메세지의 종류를 구분할수 있는 문자열을 넣고

뒷쪽에는 실제 메세지를 넣는것이죠.

관련된 함수에 대해서 말씀 드리면 서버의 경우에...

OnClientRead 이벤트 핸들러에서 Socket 이라는 클라이언트의 소켓인자가 넘어온다.
그때...
str=Socket->ReceiveText(); // 클라이언트로 부터 메세지를 받는다.
Socket->SendText(str); //클라이언트에게 메세지를 보낸다.

Server->Socket->Connections[i]->SendText(str);
// i번째 connection 이 이루어진 클라이언트에게 메세지를 보낸다.

등등이 있습니다.

이만...

+ -

관련 글 리스트
5349 소켓을 사용해서 메세지주고 받기. FEELHACK 2589 2001/02/11
5350     Re:소켓을 사용해서 메세지주고 받기. 홍용혁 3035 2001/02/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.