c - mac osx 上的 select() 套接字系统调用需要很长时间才能读取

标签 c macos sockets

我们正在开发需要通过 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/

相关文章:

objective-c - 如何将 CAMetalLayer 与 NSView 一起使用?

macos - swift : "fatal error: use of unimplemented initializer ' 初始化()' for class..."

c - 未声明的变量

c - C 和 printf 中的递归函数

objective-c - smulwb 汇编指令

c - 这两个 FOR 循环有什么区别?

c - 将天数添加到日期中

c - Libnet基本使用

ServerSocker.accept() 处的 java.lang.NullPointerException

java - BufferedReader、StreamWriter 崩溃