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
[2029] Re:[질문] 전화접속헤제가 갑자기 안됩니다.
박지훈.임프 [cbuilder] 3584 읽음    1999-10-01 00:00
: 안녕하신가요?
: 여긴 오늘 처음으로 방문하는곳이라 그런지
: 질문하기가 어색하지만 그래도 이것만은
: 해결을 하고 싶어서 질문을 올립니다...
:
: 아래 코드는 어디 인터넷 사이트에서 주어온
: 전화접속 네트워킹이 연결되어있다면 강제로
: 끊는 코드입니다...
:
: 빌더 3 프로 버전을 버리고 빌더 4 엔터 로 깐다음
: 이 소스를 다시 컴파일을 해보니
: 그 후론 연결이 해제 되지 않고있습니다...
:
: 그래서 지금 다시 빌더 4 를 지우고 빌더 3를 깔아서
: 다시 컴파일 하고싶은데 빌더 3가 없어서리..
: 이럴수도 저럴수도 없는 상태입니다...
:
: 부디 해결방법을 가르쳐주시구요
: 이 코드가 잘못된것이라면 임프님께서 잘 뜯어고쳐주세요
:
: 그럼.. 수고하세요~~ 빌더 이용자들한테 도움만 되는?
: 곳이 되길..빌며~~
:
: ================ 코드 ================
: bool DisconnectRas()
: {
:    bool bOk = false;
:    RASCONN ras[20];
:    DWORD dSize,dNumber,dCount;
:
:    ras[0].dwSize = sizeof(RASCONN);
:    dSize = sizeof( ras );
:
:    // Get active RAS - Connection
:    if( RasEnumConnections( ras, &dSize, &dNumber ) == 0 )
:    {
:       bOk = true;
:
:       for( dCount = 0; dCount < dNumber; dCount++ )
:       {
:          // Hang up that connection
:          if( RasHangUp(ras[dCount].hrasconn) != 0 )
:          {
:             bOk = false;
:             break;
:          }
:       }
:    }
:    return bOk;
: }
: ========================끝=============================




임펠리테리입니다.

에구.. 저는 지금 모뎀도 없고(회사에서는 랜, 집에서는 케이블모뎀을 씁니다),
RAS 프로그래밍을 해본 적도 없어서, 자신있게 답변을 드릴 수는 없네요.
그래도, 답답하신 것 같아서 보여주신 소스는 조금 수정해보았습니다. 테스트할 모뎀도
없는 상태라서 제대로 동작할지도 장담도 못하겠네요.

수정한 부분은, API 레퍼런스에서 권장하는대로, RasHangUp()을 호출한 후에
실제로 연결이 끊어질 때까지 기다리도록 한 것입니다. (레퍼런스를 보니 RasHangUp()을
호출한 후에 RasGetConnectStatus()와 Sleep(0)를 사용하여 루핑을 하면서 체크하도록
권하더군요.)

그 외에.. 코드를 수정하다보니, 제 입맛에 맞지 않으면 코드가 제대로 눈에 들어오지 않는
제 고약한 버릇때문에 조금씩 코드에 손을 댔습니다.

#include <ras.h>
bool DisconnectRas()
{
    RASCONN ras[20];
    ras[0].dwSize = sizeof(RASCONN);
    DWORD dSize = sizeof(ras), dNumber;

    if(RasEnumConnections(ras, &dSize, &dNumber) != 0)
        return false;

    bool bOk = true;
    RASCONNSTATUS RasStatus;
    RasStatus.dwSize = sizeof(RASCONNSTATUS);
    for(int i=0; i<dNumber; i++)
    {
        if(RasHangUp(ras[i].hrasconn) == 0)
            while(RasGetConnectStatus(ras[i].hrasconn, &RasStatus) != ERROR_INVALID_HANDLE)
                Sleep(0);
        else
            bOk = false;
    }
   return bOk;
}

물론 위에서 추가한 #include <ras.h> 라인은 현재의 소스에도 있겠지요? 없으면 컴파일도
되지 않을테니...
이것때문인지 알수가 없어서.. 이렇게 하면 될 거라고 장담할 수가 없네요. 모뎀도 없는
한심한 주제가 한탄스럽습니다. 만약 이 코드를 써도 안된다면, 프로젝트 전체를 제게
메일로 보내주시기 바랍니다. 혹 보여주시기가 곤란한 부분이 있다면 그런 부분은 모두
제외하고 따로 프로젝트를 만들어서 보내주시든지요. 보내주시면 회사의 모뎀이 있는 컴퓨터로
가서 확인해보도록 하겠습니다.

그럼 이만...

+ -

관련 글 리스트
2028 [질문] 전화접속헤제가 갑자기 안됩니다... 이코딩을 봐주세요? 최장민 3458 1999/10/01
2029     Re:[질문] 전화접속헤제가 갑자기 안됩니다. 박지훈.임프 3584 1999/10/01
2032         임프님 ㅌ_ㅌ 뜯어고치신 코드 역시 먹히질 않네여~ 최장민 3330 1999/10/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.