お世話になります。
VC++(.NET2003) OS XP Proで、TCP/IPサーバープログラムを作成しています。
通信はうまく行っているのですが、Recieve、Send を繰り返していると、
メモリ消費量が増大して、2日程度で、プログラムが止まってしまいます。
プログラム構造は、以下の通りです。
//接続受付スレッド
UINT ThreadFuncS(LPVOID n)
{
socp = new CSocket();
ret = socp->Create(MSRP_SOC_PORT_U,SOCK_STREAM,NULL);
bret = socp->Listen();
CClientSoc* socp2 = new CClientSoc(); // CAsyncSocket の派生クラス
if (socp->Accept(*socp2,NULL,NULL))
{
AfxBeginThread((AFX_THREADPROC)ThreadFuncSS,
(LPVOID)socp2,THREAD_PRIORITY_BELOW_NORMAL);
}
else delete socp2;
}
//クライアント個別スレッド
UINT ThreadFuncSS(LPVOID n)
{
CClientSoc *socp;
socp = (CClientSoc *)n;
while(1)
{
socp->Recieve(......); // 実際は受信長をチェックしています。
socp->Send(......);
}
}
CClientSoc の OnRecieve が呼び出されていません。
そのため、バッファが開放されずに、この様な現象になるのではないかと考えていますが、
対処方法が解りません。
思いっきり的がはずれているかも知れませんが、どなたかご教授ねがえませんでしょう
か?
よろしくお願いいたします。
お騒がせしました。
スレッド構成が間違えていました。