我已经开发了一个Android应用程序,该应用程序具有多个设备,这些设备通过Bluetooth套接字连接将数据发送回服务器设备,但是出现错误:
E/bt-btif: send none, EAGAIN or EWOULDBLOCK, errno:11
我已经阅读到这些错误发生在接收设备的套接字缓冲区已满的套接字连接上,但是我不确定如何在Android应用程序中处理它。是否可以在尝试传输之前检查这些错误,或者如果发生,请捕获并稍后重试传输?
最佳答案
如果得到EAGAIN
,只需再次重试相同的操作。
如果获得EWOULDBLOCK
,则必须使用非阻塞套接字,并且所请求的操作将导致套接字阻塞调用线程。使用select()
等待清除阻塞条件,然后再次重试原始操作。