: 안녕하신가요?
: 여긴 오늘 처음으로 방문하는곳이라 그런지
: 질문하기가 어색하지만 그래도 이것만은
: 해결을 하고 싶어서 질문을 올립니다...
:
: 아래 코드는 어디 인터넷 사이트에서 주어온
: 전화접속 네트워킹이 연결되어있다면 강제로
: 끊는 코드입니다...
:
: 빌더 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> 라인은 현재의 소스에도 있겠지요? 없으면 컴파일도
되지 않을테니...
이것때문인지 알수가 없어서.. 이렇게 하면 될 거라고 장담할 수가 없네요. 모뎀도 없는
한심한 주제가 한탄스럽습니다. 만약 이 코드를 써도 안된다면, 프로젝트 전체를 제게
메일로 보내주시기 바랍니다. 혹 보여주시기가 곤란한 부분이 있다면 그런 부분은 모두
제외하고 따로 프로젝트를 만들어서 보내주시든지요. 보내주시면 회사의 모뎀이 있는 컴퓨터로
가서 확인해보도록 하겠습니다.
그럼 이만...
|