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
[51002] Re:인디10 채팅서버에서 접속 해제 문제..
DoyongID [doyongid] 1976 읽음    2007-10-23 15:21
TIdTcpServer에다 TIdServerInterceptLogEvent 컴포넌트를 붙여서 접속, 패킷 메시지를 뿌리고 있었는데, 이걸 제거하니까 제대로 작동하네요..

왜 그런지는 모르겠지만요..ㅡ.ㅡ

DoyongID 님이 쓰신 글 :
: 채팅서버에 클라이언트 2대를 물려서 메시지를 주고받고 있습니다..
:
: A클라이언트가 메시지 보내면 서버에서 받아서, A,B에게 전송하고,
: B클라이언트가 메시지에 보내면 역시 서버에서 A,B에게 다시 전송하는 방식인데요..
:
: 각 클라이언트가 1ms마다 메시지를 보냅니다..
:
: 그런데, 이 과정에서 A클라이언트의 접속을 해제하면 B클라이언트 접속도 해제되거든요.. 어디가 문제인지 모르겠습니다. 동기화 문제인가 싶어서 크리티컬섹션도 먹였는데, 마찬가지고..
:
: void __fastcall TWin_Main::TCPServerExecute(TIdContext *AContext)
: {
:     TByteDynArray    Buffer;
:     PACKET_RECVCHAT    stRecvPacket;
:     PACKET_SENDCHAT    stSendPacket;
:     BYTE            Cmd;
:
:     TIdContext         *lpContext;
:
:     EnterCriticalSection(&Cs);
:
:     Cmd    = AContext->Connection->IOHandler->ReadChar();
:
:     switch(Cmd)
:     {
:     case CMD_CHAT:
:         AContext->Connection->IOHandler->ReadBytes(Buffer, sizeof(PACKET_RECVCHAT), false);
:         BytesToRaw(Buffer, &stRecvPacket, sizeof(PACKET_RECVCHAT));
:
:         ListBox_Info->ItemIndex    = ListBox_Info->Items->Count - 1;
:
:         stSendPacket.Cmd    = CMD_CHAT;
:         strcpy(stSendPacket.Str, stRecvPacket.Str);
:
:         Buffer     = RawToBytes(&stSendPacket, sizeof(PACKET_SENDCHAT));
:
:         TList *LockList = TCPServer->Contexts->LockList();
:
:         try
:         {
:             for(int i = 0; i < LockList->Count; i++)
:             {
:                 lpContext = (TIdContext *)(LockList->Items[i]);           // get client-object
:
:                 if(lpContext->Connection->IOHandler->Connected())
:                     lpContext->Connection->IOHandler->Write(Buffer);
:             }
:         }
:         __finally
:         {
:             TCPServer->Contexts->UnlockList();
:             LeaveCriticalSection(&Cs);
:         }
:     }
: }

+ -

관련 글 리스트
51000 인디10 채팅서버에서 접속 해제 문제.. DoyongID 1522 2007/10/23
51002     Re:인디10 채팅서버에서 접속 해제 문제.. DoyongID 1976 2007/10/23
51001     Re:인디10 채팅서버에서 접속 해제 문제.. 아루스 2427 2007/10/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.