【问题标题】:How to send a message on a socket when no listen?不听时如何在套接字上发送消息?
【发布时间】:2013-03-22 19:09:58
【问题描述】:

消息队列可以发送消息,即使对方不在场读取消息,对方可以稍后慢慢来并读取累积的队列。

如何在套接字中实现这一点?每次我在没有人听(当然绑定)的情况下写入套接字时,它都会失败[连接流套接字:连接被拒绝或连接流套接字:没有这样的文件或目录]

起初,我只关注 AF_UNIX、SOCK_STREAM

谢谢 内森

【问题讨论】:

  • OSI 传输层网络中没有任何概念可以满足您的需求。正如您提到的消息队列库一样,它必须在网络层的更高级别实现。
  • 您将问题更改为仅涵盖 Unix 域套接字,所以我假设您正在做 IPC。我建议查看 Sys V IPC 队列,因为它们在 *nix 系统上普遍可用。
  • +1 thx,我已经有了我的 API 的消息队列实现,但人们对 msgq 并不满意,因为令人惊讶的是,最大 msgq 只有数百个,本地套接字可以更好地扩展,所以我正在调查在那些线上。
  • 这些参数通常可以通过调整操作系统来调整。但是是的,Sys V IPC一般只是为了满足接口的要求而提供的,并不关心可扩展性。
  • @EricUrban,OSI 只是一些过热的想象中的虚构。它的传输层与现实世界的网络没有任何共同之处。

标签: c linux sockets


【解决方案1】:

做不到。如果没有人接受数据,就没有人接受数据。

看看systemd(在 Linux 中)如何处理这个问题,也许它可以解决你的问题?

【讨论】:

    猜你喜欢
    • 2012-03-25
    • 1970-01-01
    • 2011-11-26
    • 2019-07-04
    • 2012-12-13
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    相关资源
    最近更新 更多