char IP[30] = "127.0.0.1";
char PORT[10] = "1000";
void Connection(HWND hwnd)
{
WORD wVersionRequested;
WSADATA wsaData;
char * ip = "";
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD( 2, 0 );
int ConRes, ConRes2;
char Buffer [20] = "";
if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
{
if((hostinfo = gethostbyname(IP)) != NULL)
{
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}
InitWSA();
begin:
Sleep(1000);
RemAdr.sin_family = AF_INET;
RemAdr.sin_addr.s_addr=inet_addr(127.0.0.2);
RemAdr.sin_port = htons (atoi(PORT));
client = socket (AF_INET,SOCK_STREAM,0);
switch(connect (client, (struct sockaddr *)&RemAdr,sizeof(RemAdr)))
{
case 0:
WSAAsyncSelect(client,hwnd,RATMSG_SOCKET,FD_READ|FD_CLOSE|FD_CONNECT);
return;
break;
default:
Sleep(1000);
RemAdr.sin_family = AF_INET;
RemAdr.sin_addr.s_addr=inet_addr(ip);
RemAdr.sin_port = htons (atoi(PORT));
client = socket (AF_INET,SOCK_STREAM,0);
ConRes2=connect (client, (struct sockaddr *)&RemAdr,sizeof(RemAdr));
break;
}
switch(ConRes2)
{
case 0:
WSAAsyncSelect(client,hwnd,RATMSG_SOCKET,FD_READ|FD_CLOSE|FD_CONNECT);
return;
break;
default:
goto begin;
break;
}
return;
}
接続を試みて接続に失敗した数時間後、アプリケーションを閉じるまで、ユーザーのインターネットは最終的に切断されます。問題であると想定されるのは?私のコードは少しずさんだと思うので、役立つヒントがあれば素晴らしいと思います。学びたいと思います。
これで私は実際に最初のIPアドレスが失敗した場合に接続するための「バックアップ」IPアドレスを持つ方法を作ろうとしていました。したがって、127.0.0.1に接続できない場合は、次に127.0.0.2を試してから、例として127.0.0.1に戻ってください。どうすればそれを管理できますか?
PSあなたが私のコードで「悪い習慣」のように見えるものは何でも、私が将来それを学び/修正できるようにそれを指摘してください。ありがとう。