问题是这样的:我的一个服务器进程向客户进程提供服务,客户进程向服务器注册以后就可以进程间通讯来使用服务器提供的服务(客户进程可以是任意程序,只要按照指定的规则就可以了,因此它们可能是各种不同的程序),如果一个客户进程退出就需要从服务器注销它的数据。
问题是如果客户进程不主动向服务器注销就会产生问题(如客户进程异常退出等)。我想可能有一种方法就是用SOCKET:client 和 server 建立连接以后,如果client终止,socket会被断开,服务器就可以知道了。(不知道可不可行)
另外如果进行有父子关系就可以在父进程中用WaitForSingleObject在一个线线程中等待子进程句柄从而达到效果,但是如何在两个进程间建立父子关系(不能在父进程中使用CreateProcess来创建子进程)?
问题是如果客户进程不主动向服务器注销就会产生问题(如客户进程异常退出等)。我想可能有一种方法就是用SOCKET:client 和 server 建立连接以后,如果client终止,socket会被断开,服务器就可以知道了。(不知道可不可行)
另外如果进行有父子关系就可以在父进程中用WaitForSingleObject在一个线线程中等待子进程句柄从而达到效果,但是如何在两个进程间建立父子关系(不能在父进程中使用CreateProcess来创建子进程)?
解决方案 »
- 正确的排序算法
- MFC 语法错误 : 缺少“;”(在标识符“m_sSplitFlag”的前面)
- vc绘图问题
- 用API实现的非模态对话框内存泄漏问题
- 使用SOAP调用Web Service,本机运行没问题,在其他机器上有异常
- 如何使ListCtrl固定只有某些列,用鼠标也不能拖出新的列来?
- 为什么在一个工程中不能在两个.cpp中定义相同的变量或函数,但可以定义相同的类?
- 大牛求解,游戏开发、嵌入式、JAVA选择
- 提取字符串问题
- Socket按固定字节数发送数据出现数据包重新分包的情况(如两个256字节数据包 被分成一个374字节和一个128字节被接收)
- [公告]关于政治帖
- OpenGL如何椭球体,急
必须在OpenProcess中指定SYNCHRONIZE标志才行啊,这个标志只在NT中才有效。
现在我是这样做的:在client中用当前时间(GetTickCount)作为ID创建一个命名Mutex(就是这个ID转换后得到的字符串),并将这个ID发送到server,主线程在一个监视线程中每隔一段时间就去偿试用这个名字打开该命名Mutex,如果存在则表明该客户进程还在,否则表明该Client已经退出。当前成功打开后还需要立即关闭该Mutex。
不知道各位大侠还有没有更好一点的办法?
晚上结贴!