Unix 域套接字:发送文件描述符和 select()
Unix domain socket : sending file descriptor and select()
我已经看到过这些问题关于描述符传递SO。
- 使用 unix 域套接字传递的描述符
- 通过 UNIX 域套接字发送文件描述符,然后选择()
我写了以下两个程序来与Unix域套接字一起使用
- 主程序
- 描述符接收器
旨在用作
主程序接受所有客户端连接,并将这些描述符发送到正在运行的服务程序(描述符接收器)。描述符接收器 recvs 描述符并将它们设置为 fd_set and use select
以检查描述符是否可读,如果它已准备好读取,然后将描述符读入缓冲区并将字符串长度发送到客户端。
Note : I am testing using telnet on ubuntu 14.10
该程序的主要问题是,即使描述符已准备好读取,即 Select() 仍在等待FD_ISSET() return false
。有时它可以工作,在这种情况下,它会接收很少的消息并挂起。
我已经尝试了所有三种风格的发送和 recv 描述符函数,但没有一个完美运行。
如何解决此错误?
我花了很多时间在上面的代码中找到错误。它是在第 153 行的描述符接收器中,我忘了计算 recvd 描述符的最大值。
相关文章:
- 使用VerQueryValue检索应用程序的文件描述
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 从 Boost ASIO 获取 epoll 描述符 io_service对象
- SQLite3 在 c++ 中输出 SELECT 上的空列表
- I2C 文件描述符上的 I2C 总线可写/可读标志
- 如何在 CompleteAsyncIO 中访问 IOMemoryBufferDescriptor,该描述符通过中断 EP
- 如何在 sys/select.h 中正确使用
- 如何在动态创建的CMFCToolbar的工具提示中添加描述?
- 下面描述的概念如何在C++14中定义?
- 请描述一下在 c++ 中在此类中定义构造函数的方式?
- numpy.load 给出 ValueError: descr 不是有效的 dtype 描述符:
- 在 Direct3D 12 的描述符范围内设置多个描述符
- 将 select() 与非基于文件描述符的输入一起使用
- 使用 Select 多路复用未命名的管道和其他文件描述符
- 使用 select() 和大量文件描述符的外部代码
- C++ select() 递减文件描述符计数
- Unix 域套接字:发送文件描述符和 select()
- 将boost::asio集成到基于事件循环的文件描述符中(select/poll)