ソケット通信時のWSACleanup処理のエラーについて
はじめまして。
現在、C++ Builder ver6.0 にて、ソケット通信のプログラムを作成しているのですが、受信処理を一定回数行うとwinsockのリソースを解放するWSACleanupが失敗してしまいます。1ファイル受信するごとに下記のソケットの初期化処理を入れています。
bool __fastcall CUdpSock::Init(void)
{
WORD wVersionRequested; // socket version
int errorStatus;
WSADATA wsaData;
/* WinSockの初期化を行う */
wVersionRequested = MAKEWORD(1, 1); // バージョン 1.1 を要求する
nErrorStatus = WSAStartup(wVersionRequested, &wsaData);
if ( nErrorStatus != 0 )
{
m_msg.printf("WinSockの初期化失敗\n");
Application->MessageBox(m_msg.c_str(), "ソケットの初期化", MB_ICONINFORMATION | MB_OK);
return false;
}
if (atexit((void (*)(void))(WSACleanup))) // 終了時にWinSockのリソースを解放するようにしておく
{
m_msg.printf("atexit(WSACleanup)失敗\n");
Application->MessageBox(m_msg.c_str(), "ソケットの初期化", MB_ICONINFORMATION | MB_OK);
return false;
}
return true;
}
現状、32回連続で受信した後、上記のWSACleanupで失敗になっています。
このような現象の場合、まずどのあたりを疑うべきでしょうか?
曖昧ですがご教授よろしくお願いします。
お礼
本当に、何度もありがとうございました。