我们正在开发需要通过 TCP 发送和接收数据的跨平台网络应用程序。在 Linux 上,我们使用 select()
来等待发送和接收,以确保套接字准备就绪。然而,在 OSX 上,select for read 返回的时间非常荒谬——超过 20 秒。 select()
没有超时——我们的超时是 60 秒,数据正在返回,只是慢得可笑。这仅发生在读取时,不会发生在发送时。网络似乎很好(同样,同一网络上的 linux 机器似乎没有相同的问题)。
有人知道在 OSX 中使用套接字编程的任何注意事项吗?
最佳答案
你试过了吗kqueue(2)
在 OSX 和 epoll(7)
上在 Linux 上?这些是用于 I/O 事件处理的更高性能和更灵活的接口(interface),尽管特定于平台。您也可以看看 libevent
为您抽象所有这些。
关于c - mac osx 上的 select() 套接字系统调用需要很长时间才能读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3532634/