Unix域套接字:发送文件描述符和select()

时间:2015-03-08 10:35:15

标签: c++ linux sockets unix unix-socket

我已经在描述符传递SO上看到了这些问题。

我写了两个与Unix域套接字一起使用的程序

旨在用作

主程序接受所有客户端连接并将这些描述符发送到正在运行的服务程序(描述符接收器)。描述符接收器记录描述符并将它们设置为fd_set and use select以检查描述符是否可读如果它已准备好读取则将描述符读入缓冲区并将字符串长度发送给客户端。

Note : I am testing using telnet on ubuntu 14.10

该程序的主要问题是FD_ISSET() return false,即使描述符已准备好读取,即Select()仍在等待。 有些时候它工作,在这种情况下,它会收集一些消息并挂起。

我尝试了三种发送和recv描述符函数,但它们都不能完全完美

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

我花了很多时间在上面的代码中找到bug。 它在第153行的descriptor receiver中,我忘了计算recvd描述符的最大值。