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
[29342] [질문]패킷으로 구조체 전송하니까 에러가.. 잘못된 것좀 알려주세요
구리구리 [nkein82] 1098 읽음    2004-04-12 18:23
// 단순히 문자만 주고 받을때는 이렇게 해도 잘 돌아갔습니다
void __fastcall TMESSENGER_SERVER::SendAll( _PACKET *tempPacket )
{
    CXOverlapped *pSendPacket = new CXOverlapped;

         // 둘다 char형 배열입니다
         strcpy( pSendPacket->szRecv, tempPacket->cNameMsg );

    pSendPacket->mode = WRITE;
    pSendPacket->iNum = 0;
    for( int i = 0; i < g_nClients; i++ )
    {
        int len = strlen( pSendPacket->szRecv );
             pSendPacket->szRecv[len+1] = '\0';

        if( INVALID_SOCKET == g_asockClients[i] )
            continue;

       
             // char형 배열을 전송하고
             if( FALSE == WriteFile( (HANDLE)g_asockClients[i],
                        pSendPacket->szRecv,
                            len,
                            NULL,
                    pSendPacket ) )
           {
            if( GetLastError() != ERROR_IO_PENDING )
            {
                    MESSENGER_SERVER->ListBox1->Items->Add("WSARecv() failed with error");
            return;
               }
        }
        pSendPacket->iNum++;
    }
}





unsigned int __stdcall RecvMsg(void *arg)
{
    SOCKET sock = (SOCKET)arg;
    char nameMessage[NAMESIZE + BUFSIZE];
    int strLen;

    while ( 1 )
    {
        // char형으로 받았을때는 잘나옵니다
        strLen = recv( sock, nameMessage, NAMESIZE + BUFSIZE - 1, 0 );
       
        if (strLen == -1 )
            return 1;
        nameMessage[strLen] = '\0';
        AppMain->WriteStatusMsgDlg(nameMessage);
    }
}



/////////////////////////////////////////////////////////////////////////////////////////////////////서버에서 클라이언트로 패킷 클래스를 보내서 iMessageFlag, cNameMsg값을 출력하면 이상한 값이 나오네요

void __fastcall TMESSENGER_SERVER::SendAll( _PACKET *tempPacket )
{
    CXOverlapped *pSendPacket = new CXOverlapped;

         // 값이 제대로 나오는지 보기위해 클라이언트로 전송하기전에
    // 서버에서 한번 찍어봤음. 값은 제대로 나옵니다
    MESSENGER_SERVER->ListBox1->Items->Add( tempPacket->iMessageFlag );
         MESSENGER_SERVER->ListBox1->Items->Add( tempPacket->cNameMsg );

    pSendPacket->mode = WRITE;
    pSendPacket->iNum = 0;
    for( int i = 0; i < g_nClients; i++ )
    {
        if( INVALID_SOCKET == g_asockClients[i] )
            continue;

        // 패킷으로 보내고
             if( FALSE == WriteFile( (HANDLE)g_asockClients[i],
                        (char *)&tempPacket,
                            sizeof( (char *)&tempPacket ),
                            NULL,
                pSendPacket ) )
           {
            if( GetLastError() != ERROR_IO_PENDING )
            {
                    MESSENGER_SERVER->ListBox1->Items->Add("WSARecv() failed with error");
            return;
               }
        }
        pSendPacket->iNum++;
    }
}



unsigned int __stdcall RecvMsg(void *arg)
{
    SOCKET sock = (SOCKET)arg;
    char nameMessage[MY_COMMUICATION_BUFFER];
    int strLen;

    while ( 1 )
    {
        // 문자열로 받아서
        strLen = recv( sock, nameMessage, MY_COMMUICATION_BUFFER, 0 );
       
        if (strLen == -1 )
            return 1;

        // 값을 패킷 클래스에 넣고
        _PACKET *MyPacket = (_PACKET *)nameMessage;

        // 값이 제대로 나오는지 확인하려고 다 찍어봤음...
        AppMain->WriteStatusMsgDlg( nameMessage );
        AppMain->WriteStatusMsgDlg( MyPacket->cNameMsg );
        AppMain->WriteStatusMsgDlg( MyPacket->iMessageFlag );
    }
}

+ -

관련 글 리스트
29342 [질문]패킷으로 구조체 전송하니까 에러가.. 잘못된 것좀 알려주세요 구리구리 1098 2004/04/12
34850     Re:[질문]패킷으로 구조체 전송하니까 에러가.. 잘못된 것좀 알려주세요 김영민 1032 2004/04/15
34849     Re:[질문]패킷으로 구조체 전송하니까 에러가.. 잘못된 것좀 알려주세요 김유미 910 2004/04/13
29344     Re:[질문]패킷으로 구조체 전송하니까 에러가.. 잘못된 것좀 알려주세요 김진영 1772 2004/04/13
29350         Re:Re:[질문]으음... 구리구리 855 2004/04/13
29358             Re:Re:Re:[질문]으음... 김진영 918 2004/04/13
34848                 Re:Re:Re:Re:[질문]으음... 구리구리 855 2004/04/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.