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