Darwin中如何通过select函数实现socket接收前的等待?

2026-06-11 14:391阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计403个文字,预计阅读时间需要2分钟。

Darwin中如何通过select函数实现socket接收前的等待?

Darwin系统中socket接收前使用select等待,作者:李国腾。背景原因:由于Darwin+rtsp项目中所有socket都使用了非阻塞模式,因此发送和接收不需要使用select,可直接调用send和recv。


Darwin中socket接收前使用select等待

​​编者:李国帅​​


背景原因:

因为darwin rtsp项目中所有的socket都是用了非阻塞模式,所以发送和接收不需要使用select,直接调用send和recv即可。

但是如果无数据,会发现出现近乎死循环的行为。

OS_Error Socket::Read(void *buffer, const UInt32 length, UInt32 *outRecvLenP)

OS_Error UDPSocket::RecvFrom(uSockAddr& outRemoteAddr,void* ioBuffer, UInt32 inBufLen, UInt32* outRecvLen)

看来还必须在recv或者recvfrom出现阻塞之前,使用select等待一下,但是等待的时间必须要小。

阅读全文

本文共计403个文字,预计阅读时间需要2分钟。

Darwin中如何通过select函数实现socket接收前的等待?

Darwin系统中socket接收前使用select等待,作者:李国腾。背景原因:由于Darwin+rtsp项目中所有socket都使用了非阻塞模式,因此发送和接收不需要使用select,可直接调用send和recv。


Darwin中socket接收前使用select等待

​​编者:李国帅​​


背景原因:

因为darwin rtsp项目中所有的socket都是用了非阻塞模式,所以发送和接收不需要使用select,直接调用send和recv即可。

但是如果无数据,会发现出现近乎死循环的行为。

OS_Error Socket::Read(void *buffer, const UInt32 length, UInt32 *outRecvLenP)

OS_Error UDPSocket::RecvFrom(uSockAddr& outRemoteAddr,void* ioBuffer, UInt32 inBufLen, UInt32* outRecvLen)

看来还必须在recv或者recvfrom出现阻塞之前,使用select等待一下,但是等待的时间必须要小。

阅读全文