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
[51000] 인디10 채팅서버에서 접속 해제 문제..
DoyongID [doyongid] 1522 읽음    2007-10-23 14:19
채팅서버에 클라이언트 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 1977 2007/10/23
51001     Re:인디10 채팅서버에서 접속 해제 문제.. 아루스 2428 2007/10/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.