Close只是close CSocket里面的系统socket对象,并不释放CSocket的内存
再CSocket的析构里面很可能会判断socket状态,再决定是否再次调用close。
另外对一个socket对象使用多次closehandle也不会出现什么问题的
再CSocket的析构里面很可能会判断socket状态,再决定是否再次调用close。
另外对一个socket对象使用多次closehandle也不会出现什么问题的
解决方案 »
- VC如何向某个进程或窗口发送关机消息?
- 关于对话框重绘的问题
- MFC中 Text Control 控件在哪里?
- vc实时作图的问题
- 公司不行了,上海那个软件公司招人,请联系qq:17445285
- VC有经验的朋友给点学习方面的经验---难道VC只能用来做图形界面吗?!!偶是刚学WinApi的新手,PetZolt的<windows程序设计>刚看完上
- 什么时候应该创建一个兼容的DC呢
- 控制台程序中为何不认#include "stdafx.h"????在线等
- 如何使用CreateDIBitmap函数创建HBITMAP?
- 高水快请帮忙,有分拿,今天就给
- 知道进程id,如何知道他的状态
- 程序员,就这么一点钱,值吗?
当我的client端断开后,我的server端出错了,跟踪进去,好像CSocket封装的窗口已经无效了
ASSERT(pState->m_hSocketWindow != NULL);这是什么原因呢?
Second:Delete;
当客户端断开时,我的程序在服务器端OnClose中侦测到断开,于是我就在OnClose中对发送线程
作退出处理。
因为发送线程是相对独立的,当服务器端侦测到连接断开时,发送线程可能还在不停的发送数据。
于是出现上述这种socket窗口已经撤销的情况。高手请指点一下,我该怎样协调一下?谢谢啦!
我知道了,谢谢。to Kevin_qing(Kevin):
我还有疑问,Msdn中如是说:
Called by the framework to notify this socket that the connected socket is closed by its process. 在OnClose函数响应时,socket已经被所在进程关闭了。按你的方法,在发送线程根据在
OnClose中设置的标记再关闭socket,岂不是多此一举!
就是说这里的onclose是指socket的连接中止了,并不是说你已经调用了CSocket::close()。连接中止后还是要使用close来关闭socket的句柄。另外MFC的CSocket实现有bug,在2000上面容易非法操作。