1

我需要创建一个通过 Unix 套接字连接的客户端-服务器模型。我的客户端将请求服务器打开一个只有服务器具有权限的文件。服务器将打开文件并使用“sendmsg”API 发送 FD,客户端将使用“recvmsg”接收 FD。现在我的问题是我可以使用非阻塞套接字来实现这一点吗?另外,如果可能的话,我怎么知道客户端消息的长度?

请指出一些相同的非阻塞实现。

4

2 回答 2

0

您应该使用sendfile在 FD 和套接字之间传输文件。

如果套接字是非阻塞的,则 sendfile(或 send 或 sendmsg)调用可能会返回一个值,指示已完成的部分数量。使用 select() 或 poll() 来获取何时可以再次发送的通知(从文件描述符中的前一个点开始,当前一个发送停止时)。

至于文件长度,您必须自己将其添加到您的请求/响应协议中。(例如在服务器上调用 stat(),发送文件长度,然后发送文件本身)。

于 2012-06-23T04:43:31.600 回答
0

相关: http: //lists.canonical.org/pipermail/kragen-hacks/2002-January/000292.html所以我的回答不完整。

于 2012-06-21T06:29:14.410 回答