我在一个多线程处理的服务端程序中,使用了CSocket类。
首先,侦听端口。如果有连接请求被Accept,则转入到新的线程取处理。
while(1)
{
CSocket nsock;
SOCKET tsock;
i=sizeof(sockaddr);
if(listen_socket.Accept(nsock,&nfrm,&i)!=0)
{
tsock=nsock.Detach();
if(AfxBeginThread(ReceviceProc,(void *)tsock)==NULL)
{
nsock.Close();
}
else
{
}
nsock.Close();
}
}
在处理线程ReceiveProc中,重新定义一个CSocket对象sock,sock.Attach((SOCKET)nPara)),在处理线程退出时,sock.Close(),但是,最近发现有内存问题,即在任务管理器中发现内存在4k的增加,但是,我该关闭的东西全部都关闭了。通过内存监测工具检查不出来。VC中的Debug页检查不出。请高手指点。
首先,侦听端口。如果有连接请求被Accept,则转入到新的线程取处理。
while(1)
{
CSocket nsock;
SOCKET tsock;
i=sizeof(sockaddr);
if(listen_socket.Accept(nsock,&nfrm,&i)!=0)
{
tsock=nsock.Detach();
if(AfxBeginThread(ReceviceProc,(void *)tsock)==NULL)
{
nsock.Close();
}
else
{
}
nsock.Close();
}
}
在处理线程ReceiveProc中,重新定义一个CSocket对象sock,sock.Attach((SOCKET)nPara)),在处理线程退出时,sock.Close(),但是,最近发现有内存问题,即在任务管理器中发现内存在4k的增加,但是,我该关闭的东西全部都关闭了。通过内存监测工具检查不出来。VC中的Debug页检查不出。请高手指点。
解决方案 »
- 读取txt文件最后出现乱码
- update 软件更新程序,本机如何进行测试?
- 怎样判断文件是否传输完整?
- MDI的TOOLBAR能根据激活子窗口的不同而屏蔽一些吗?
- 串口发送数据先设置好按确定后再点击运行按钮程序可以运行,当点击暂停程序暂停,再按停止时程序可以停止,这个运行暂停再停止的命令帧如何编写啊?
- IPV6混杂模式下.怎样绑定套接字!!!
- 【长沙】最近想换工作,~~ 顶我有分哦~~~
- 如何屏蔽子控件的事件
- 一个简单的ATL程序,出错???
- 关于中文输入的Hook!
- 在VC中,如何实现一个全局变量CString a程序在所有的类中都可以使用?
- 显示一图片,超过屏幕大小,不能自动加上滚动条...
我觉得你的程序应该不存在内存泄漏
如果不放心再用BoundChecker查一下
就是不知道Detach()有没有把句柄置为空.最好还是
CloseHandle(tsock)吧。还有,你两次nsock.Close()要出错吧。套接字是内核对象,关闭两次要出错的。