我目前是这样做的,但是recv每次返回都是-1
查看更多
u_long mode = 0;ioctlsocket(s,FIONBIO,&mode);控制为阻塞方式。
u_long mode = 1;ioctlsocket(s,FIONBIO,&mode);控制为非阻塞方式。
第一个参数是你的 socket fd。
我走入了一个误区,recv返回-1就认为是出错了,实际上这样不对,当没有数据返回的时候,也是返回-1,应该进一步判断错误码、
bytes_recv = recv(s_EthCtx.sock, recv_data, ETH_RECV_BUFZ - 1, MSG_DONTWAIT)
就这样可以解决问题。
初学者,大概浏览了一下代码,这个返回值除了-1好像没有其他错误码啊,怎么判断
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
我也是这样配置过,connect过不了、不返回ok,不配置connect就能过
没有加ioctlsocket是可以connect成功的
@陳大大 ioctlsocket 用在 connect 之后,read之前,它也影响 connect 的阻塞性。