【发布时间】:2013-01-08 15:18:38
【问题描述】:
我正在尝试编写一个等待客户端连接的代码。一旦连接到客户端,它就应该开始读取文件并发送它。
我需要通知套接字句柄,也就是说,如果客户端的连接丢失,它会通知我,以便我可以尝试重新连接。
【问题讨论】:
-
从您的问题描述来看,WFMO(或 WFSO)似乎不是您应该关注的。
标签: c++ windows sockets waitformultipleobjects
我正在尝试编写一个等待客户端连接的代码。一旦连接到客户端,它就应该开始读取文件并发送它。
我需要通知套接字句柄,也就是说,如果客户端的连接丢失,它会通知我,以便我可以尝试重新连接。
【问题讨论】:
标签: c++ windows sockets waitformultipleobjects
如果连接丢失,则由客户端重新连接。服务器不连接或重新连接到客户端。
如果您的服务器只是分发一个文件,您需要做的就是接受连接并将它们传递给一个处理程序,该处理程序将在某个时候调用TransmitFile() 并进行清理。
【讨论】:
我假设关于等待客户端连接和发送文件的部分只是为了澄清,你已经开始工作了。如果没有,有很多关于 sockets 和 file I/O 的教程。
在您的情况下,检测客户端是否仍然连接应该很简单。由于您的服务器在建立连接后立即发送文件,因此客户端将在套接字打开后立即开始读取。 read-function 阻塞,只要连接打开并且没有接收到数据。如果连接关闭,它将返回读取 0 字节。此时您知道连接已终止,您可以尝试重新连接。
如果您不是永久地从套接字读取但保持它打开以供将来通信,您应该查看select-function,它允许监视一个或多个套接字并在其中一个有更新时通知您(例如新数据可用或连接关闭)
【讨论】: