可以在CServerSocket里作一个标志,OnClose时置之,让CMySocket查询serversocket[100],再调用CServerSocket::Close().
解决方案 »
- 如何在WINDOWS中重置移动硬盘的连接
- 急问!edit控件可以转为richedit吗??
- 请教高手:两个数据源怎么办
- 创建工具拦后如何关闭和隐藏
- 怎么可以判断一个文件夹名是更名的?文件夹有没有唯一标示或是有没有更名记录?
- 各位大哥,帮个忙,如何在listcontrol的条目里面加入数据(程序内部添加,非手工添加,绝对给分)
- 快速将屏幕中一副图像上的某个颜色改为另一种颜色 -- 已实现算法,要的快来!
- 一个初学vc者的呼唤!!
- 高分寻求关于vc和mapinfo结合的资料!一定给分!!
- 各位高手,请教一个Save As 的问题
- 如何给在View中Create的CButton对象上加图标(想加一个问号图标,不想做成灰灰的,难看死了!)
- 怎么作两个一模一样的对话框?
accept的时候传一个CMySocket的指针,总之让CServerSocket可以得到serversocket[100],
在CServerSocket::Close()中处理serversocket[100],
最后Close然后delete this
因为每个连接和断开都可以得到事件,所以得到客户连接数还有访问和控制连接的socket是很好说的,但是要自己编程,好像没有什么有效的API可以得到
WM_SOCKET /* 自定义消息 */, FD_ACCEPT | FD_READ | FD_WRITE | FD_CLOSE);
在该窗口的窗口处理函数中,处理你自己的消息,在处理时,可用以下语句: ... // 其他的处理部分case WM_SOCKET: // 你自己定义的网络消息
{
if (WSAGETSELECTERROR(lParam) // 如果出错
{
closesocket(wParam); // wParam 表示发生网络事件的socket
break;
} switch (WSAGETSELECTEVENT(lParam))
{
case FD_ACCEPT:
{
...;
}
case FD_READ:
{
...;
} case FD_WRITE:
{
...;
} case FD_WRITE:
{
...;
} case FD_CLOSE // 某个socket发生了关闭事件,可能是主动的,也可能是被动
{
closesocket(wParam); // wParam -- 发生了关闭事件的socket,使用这个
// 函数可能需要强制转换
... // 你自己的处理过程 break;
}
}
}...