实现client和server之间的tcp连接,同步的。要求client能够模拟每秒同时100个用户连接server的情况。
我是这么实现的:开启一个定时器,每秒执行一次以下代码:
AfxBeginThread(Proc,NULL);UNIT slirSyncProc(LPVOID)
{
for(i=0;i<100;i++)
{
socket();
if(connect() == SOCKET_ERROR
{
closesocket();
return 1;
}
send();
int nRet=1;
while(nRet>0)
{
nRet = recv();
}
closesocket();
return 1;
}
问题一:不知道上述过程会不会产生内存泄漏?关于多线程如何检查其是否内存泄漏?
问题二:如果server在某个时候down了,client就会有很多线程阻塞在recv()这里,该如何解决这个问题?
我是这么实现的:开启一个定时器,每秒执行一次以下代码:
AfxBeginThread(Proc,NULL);UNIT slirSyncProc(LPVOID)
{
for(i=0;i<100;i++)
{
socket();
if(connect() == SOCKET_ERROR
{
closesocket();
return 1;
}
send();
int nRet=1;
while(nRet>0)
{
nRet = recv();
}
closesocket();
return 1;
}
问题一:不知道上述过程会不会产生内存泄漏?关于多线程如何检查其是否内存泄漏?
问题二:如果server在某个时候down了,client就会有很多线程阻塞在recv()这里,该如何解决这个问题?
AfxBeginThread(Proc,NULL);--这样子并不合适,应该先创建好你要的100个连接的线程,并设置为休眠.
等你要用的时候再唤醒线程,这样子要快得多,也就是说创建线程花的代价比较高.线程运行完了会自动退出.