|
제 어플리케이션에... 두개의 소켓이 있는데요.
차례로.. Connection을 맺을려고 합니다.
OmifSock이 먼저 서버와 컨넥션 시도를 하구요..
컨넥션이 되면 OmifSock2가 서버와 컨넥션을 시도 합니다.
물론 OmifSock이 컨넥션 에러가 나도 OmifSock2가 컨넥션시도를 할 수 있겠급 해놓았습니다.
아래의 소스가 OmifSockError 함수 입니다.
void __fastcall TFORM_MAIN::OmifSockError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
if(ErrorEvent == eeConnect)
{
ShowMessage("SMSG Primary System is not Available");
ErrorCode = 0;
RecieveResultFlag[SYSTEM_A] = true;
}
CloseOmifSockA();
dual_system[SYSTEM_A].STATUS = 1;
OpenOmifSockB();
}
근데 문제는 OmifSock이 컨넥션 에러가 났을 경우엔 위의 코드를 잘 수행해서
"SMSG Primary System is not Available"이란 메세지를 뿌리고 OmifSock2가 Connection 시도를 합니다.
근데 OmifSock이 컨넥션 된 후 OmifSock2가 Connection Error가 날 경우엔 OmifSockError 함수를
수행하지 않는 것 같습니다.
OmifSock2Error한수 소스는 아래와 같거든요
void __fastcall TFORM_MAIN::OmifSock2Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
if(ErrorEvent == eeConnect)
{
ShowMessage("SMSG Secondary System is not Available");
ErrorCode = 0;
RecieveResultFlag[SYSTEM_B] = true;
}
CloseOmifSockB();
dual_system[SYSTEM_B].STATUS = 1;
//양 시스템 정상으로 로그인이 되었으면 화면을 보여줌
if(dual_system[SYSTEM_A].STATUS == 0 || dual_system[SYSTEM_B].STATUS == 0) {
FORM_MAIN->Show();
FORM_AUTHOR->Hide();
}
else {
ShowMessage("Can't Connect to both System");
Close();
}
}
보는바와 같이 Connection 하다 에러가 나면 "SMSG Secondary System is not Available"
메세지를 뿌려야 하는데 그 메세지가 아니라 Windows에서 보내는 에러 메세지가 뜹니다.
똑같은 소켓 타입이구 같은 에러 코드인데 왜 한쪽만 제대로 메세지를 뿌리나요?
서버는 둘다 Sun 장비의 Unix입니다.
좀 가르쳐 주세요.
|