生活随笔
收集整理的這篇文章主要介紹了
全志XR806芯片 getsockopt、setsockopt失败如何解决?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 問題背景
調(diào)用 setsockopt 設(shè)置 socket 屬性失敗,或者 getsockopt 獲取 socket 屬性失敗。
2. 問題描述
調(diào)用 setsockopt、getsockopt 時返回 -1,且 errno 為 ENOPROTOOPT(92)。
3. 問題分析
LwIP 當(dāng)前版本有部分 socket 屬性的設(shè)置/獲取是暫時沒有支持的,操作這些屬性會返回 errno = ENOPROTOOPT 的錯誤碼。
4. 解決辦法
以 SDK 中 lwip-2.0.3 為例。可以通過打開文件 include/net/lwip-2.0.3/lwip/sockets.h 查看目前版本 LwIP 支持哪些 socket 屬性的設(shè)置/獲取。
#define SO_DEBUG 0x0001 /* Unimplemented: turn on debugging info recording */
#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */
#define SO_DONTROUTE 0x0010 /* Unimplemented: just use interface addresses */
#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when possible */
#define SO_LINGER 0x0080 /* linger on close if data present */
#define SO_DONTLINGER ((int)(~SO_LINGER))
#define SO_OOBINLINE 0x0100 /* Unimplemented: leave received OOB data in line */
#define SO_REUSEPORT 0x0200 /* Unimplemented: allow local address & port reuse */
#define SO_SNDBUF 0x1001 /* Unimplemented: send buffer size */
#define SO_RCVBUF 0x1002 /* receive buffer size */
#define SO_SNDLOWAT 0x1003 /* Unimplemented: send low-water mark */
#define SO_RCVLOWAT 0x1004 /* Unimplemented: receive low-water mark */
#define SO_SNDTIMEO 0x1005 /* send timeout */
#define SO_RCVTIMEO 0x1006 /* receive timeout */
#define SO_ERROR 0x1007 /* get error status and clear */
#define SO_TYPE 0x1008 /* get socket type */
#define SO_CONTIMEO 0x1009 /* Unimplemented: connect timeout */
#define SO_NO_CHECK 0x100a /* don't create UDP checksum */
如上所示,若該屬性后的注釋有 Unimplemented 標識,則未支持。
原貼鏈接:https://bbs.aw-ol.com/topic/736
全志在線開發(fā)者交流企鵝群(客服機器人24小時在線解答):498263967
資源獲取、問題討論可以到全志在線開發(fā)者社區(qū)進行:https://www.aw-ol.com/
全志及開發(fā)者最新動態(tài)可以關(guān)注全志在線微信公眾號
總結(jié)
以上是生活随笔為你收集整理的全志XR806芯片 getsockopt、setsockopt失败如何解决?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。