0

我正在尝试编写一个等待客户端连接的代码。一旦它连接到客户端,它应该开始读取文件并发送它。

我需要通知套接字句柄,即如果连接从客户端丢失,它会通知我,以便我可以尝试重新连接。

4

2 回答 2

1

如果连接丢失,则由客户端重新连接。服务器不连接或重新连接到客户端。

如果您的服务器只是分发一个文件,您需要做的就是接受连接并将它们传递给一个处理程序,该处理程序将在某个时候调用TransmitFile()并进行清理。

于 2013-01-08T16:16:09.213 回答
0

我假设关于等待客户端连接和发送文件的部分只是为了澄清,你已经开始工作了。如果没有,那里有很多关于套接字文件 I/O的教程。

在您的情况下,检测客户端是否仍然连接应该很简单。由于您的服务器在建立连接后立即发送文件,因此客户端将在套接字打开后立即开始读取。-functionread阻塞,只要连接打开并且没有接收到数据。如果连接关闭,它将返回读取 0 字节。此时您知道连接已终止,您可以尝试重新连接。

如果您不是永久地从套接字读取但保持它打开以供将来通信,您应该查看select-function,它允许监视一个或多个套接字并在其中一个有更新时通知您(例如新数据可用或连接关闭)

于 2013-01-08T16:21:41.600 回答