로그인 폼에서 접속 버튼을 누르게 되면
Id:= eLoginId.Text;
Pass:=eLoginPass.Text; // ID와 패스워드입니다.
try
frmMain.IdTCPClient1.Connect;
except
Application.MessageBox('접속하려는 서버의 IP 주소를 확인하여 주십시오.','오류',MB_OK+MB_ICONSTOP); // 만약에 IP 주소를 잘못 입력하여 소켓 에러가 나면 사용자게에게 안내합니다.
exit; // 그리고 exit;
end;
물론 IP와 Port는 다 입력을 해 줍니다.
그런데, IP 주소를 입력하지 않으면, 즉 Ip주소값이 nil일 땐 정상적으로 메시지가 나옵니다.
그리고 잘못 입력한 IP의 네트워크가 살아있을 때에도 메시지가 정상적으로 나옵니다.
그런데 잘못 입력한 IP의 네트워크가 죽어있을 땐 (컴퓨터가 꺼져 있다거나) Connect가 되면서 그대로 끝나버립니다.
그런데 또 웃긴건 IP 주소를 엉터리로 ex)ads.gaweg.32.gagad 이런식으오 영문자 숫자 혼용해서 입력하면 역시 에러 메시지가 나옵니다.
그런데 잘못 입력한 IP의 네트워크가 죽어있을 땐 (컴퓨터가 꺼져 있다거나) Connect가 되면서 그대로 끝나버립니다.
이 상황에서만 무한루프에 빠지는데
고칠 수 없을지..
except 구문으로 넘어가는 것이 아니라 Connect가 되버린다음 이유는 모르겠지만 무한루프에 빠집니다.
이걸 어떻게 해결해야하죠?
IdTCPClient1.Connect(1000);
이렇게 해보시면,
무한 루프인지 금방 알수 있을거 같은데요..
제 경우는 잘되던데요...