recvfrom和sendto都是阻塞的。通常来说,由于网络连接具有缓冲区,sendto函数直接将数据复制至缓冲区后即可认为操作完成,因此很少阻塞(除非缓冲区已满,它才会等待缓冲区足够写入后才能操作);而recvfrom是从缓冲区读数据,如果没有数据则会一直阻塞。
解决阻塞的方法一般有两种:使用setsockopt函数设置超时时长;在主线程中关闭socket,阻塞函数会报错并退出。
欢迎分享,转载请注明来源:夏雨云
recvfrom和sendto都是阻塞的。通常来说,由于网络连接具有缓冲区,sendto函数直接将数据复制至缓冲区后即可认为操作完成,因此很少阻塞(除非缓冲区已满,它才会等待缓冲区足够写入后才能操作);而recvfrom是从缓冲区读数据,如果没有数据则会一直阻塞。
解决阻塞的方法一般有两种:使用setsockopt函数设置超时时长;在主线程中关闭socket,阻塞函数会报错并退出。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)