我在同一台机器上有一个服务器和客户端程序。服务器是应用程序的一部分 - 可以任意启动和停止。当服务器启动时,我希望客户端连接到服务器的侦听套接字。有win32函数来等待文件系统更改(ReadDirectoryChangesW)和注册表更改(RegNotifyChangeKeyValue) - 是否有任何类似的网络更改?我宁愿不让客户不断地投票。有没有办法在win32上等待监听套接字?
0
A
回答
1
没有这样的Win32 API,但是这可以通过使用事件轻松完成。客户将等待该事件发出信号。服务器在启动时会发出事件信号。
您需要使用的相关API是CreateEvent,OpenEvent,SetEvent,ResetEvent和WaitForSingleObject。
如果您的服务器将作为服务运行,那么对于Vista和它将运行在会话0隔离。这意味着您需要使用名称前缀为“Global \”的事件。
,有可能是有一个很好的理由需要这一点,但你实现在此之前请考虑:
- 是有一些原因,你需要一个连接,对吗?我认为这不是问题,因为如果您在客户端执行某个操作,那么您可以在此创建一个新的服务器连接。
- 服务器是否比客户端更频繁地启动和停止?你可以切换谁听/连接
0
考虑使用某种形式的Windows同步,例如信号量。客户端可以等待同步原语,服务器可以在启动时发出信号。
0
个人我会使用从服务器的UDP广播,并有“客户端”听它。服务器可以在运行时每X周期广播一个UDP数据包,当客户端获得一个时,如果它尚未连接,它可以连接。
这样做的好处是,您可以将客户端移动到不同的机器上,而不会有任何问题(并且由于从客户端到服务器的主要连接已经是套接字,因此将客户端和服务器绑定到同一台计算机因为您为初始引导选择了本地IPC方法)。
相关问题
- 1. Casperjs - 有没有办法等待n秒?
- 2. 在C#中没有办法等待吗?
- 3. Python套接字监听所有端口
- 4. 监听套接字
- 5. 在没有套接字监听的情况下创建UDP客户套接字
- 6. 套接字监听器(在Linux上)
- 7. 是否有可能在异步套接字上等待连接
- 8. 有没有办法监听另一个类的方法执行?
- 9. UDP套接字监听
- 10. 有没有办法监听完成MovieClip播放?
- 11. 有没有办法删除用ajaxSuccess创建的监听器?
- 12. 有没有办法监听flash.display.DisplayObjectContainer numChildren属性中的更改?
- 13. 有没有办法确定如何套接字连接?
- 14. 有没有办法等待呈现所有角2组件?
- 15. C:套接字没有停止和等待
- 16. 有没有办法在javascript中获取所有事件监听器绑定?
- 17. udp监听器正在等待数据
- 18. 在fork()后关闭监听套接字()
- 19. 有没有办法通知用户等待WebView加载图像
- 20. 有没有办法等待佐贺的结果或例外?
- 21. 等待(0.5)有没有办法? --fflush()阻止stdin?
- 22. 有没有办法在Android中自动接听来电?
- 23. 有没有办法处理Perl 6中的Unix套接字?
- 24. 有没有办法同步检查套接字可用数据?
- 25. 有没有办法关闭Unix套接字只读或写?
- 26. 有没有办法让Excel VBA发送数据到套接字?
- 27. 如何让Win32线程在工作队列和套接字上等待?
- 28. 套接字监听和连接
- 29. 有没有办法倾听Animatable.isRunning更改?
- 30. 有没有办法在Windows上收听信号
它是一种日志查看器,所以理想情况下它会尽快运行。我的愿望不是立即联系,也不必担心多久进行一次民意调查。 – arolson101 2009-12-11 05:11:21