linux errno查看和使用_believe209的博客-CSDN博客_linux 获取errno
Linux网络编程常见错误码及分析_Justice_Gao的博客-CSDN博客
Linux socket里的send和recv,阻塞与非阻塞socket、TCP与UDP的区别_瓶子里de肥皂泡的博客-CSDN博客
同步、异步、阻塞、非阻塞,以及IO模型的理解_落尘纷扰的博客-CSDN博客
Linux下netstat命令详解_NoFaceNoSkin的博客-CSDN博客_netstat命令
netstat获取本机监听的地址列表 —— *链表实现*(sudo netstat -nl | grep -w tcp | awk '{print $4}')_杰儿__er的博客-CSDN博客
打印出errno具体的信息:printf("%s\n", strerror(errno));等价于perrno() 将错误代码转换为字符串错误信息。
printf("errno=%d\n",errno);:打印errno的值
网上说是:在linux进行非阻塞的socket接收数据时经常出现Resource temporarily unavailable,errno代码为11(EAGAIN),这表明你在非阻塞模式下调用了阻塞操作,在该操作没有完成就返回这个错误,这个错误不会破坏socket的同步,不用管它,下次循环接着recv就可以。 对非阻塞socket而言,EAGAIN不是一种错误。
失败返回-1,errno被设为以下的某个值 :
EAGAIN:套接字已标记为非阻塞,而接收操作被阻塞或者接收超时
EBADF:sock不是有效的描述词
ECONNREFUSE:远程主机阻绝网络连接
EFAULT:内存空间访问出错
EINTR:操作被信号中断
EINVAL:参数无效
ENOMEM:内存不足
ENOTCONN:与面向连接关联的套接字尚未被连接上
ENOTSOCK:sock索引的不是套接字 当返回值是0时,为正常关闭连接;
————————————————
版权声明:本文为CSDN博主「yangzhao0001」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yangzhao0001/article/details/47977477
————————————————
版权声明:本文为CSDN博主「hhy980205」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hyl999/article/details/77949768
基本概念:
其实UDP的非阻塞也可以理解成和TCP是一样的,都是通过socket的属性去做。
方法一:通过fcntl函数将套接字设置为非阻塞模式。
方法二:通过套接字选项SO_RECVTIMEO设置超时。
Linux UDP socket 设置为的非阻塞模式与阻塞模式区别_我要行天下的博客-CSDN博客_udp阻塞和非阻塞
UDP socket 设置为的非阻塞模式 :
Len = recvfrom(SocketFD, szRecvBuf, sizeof(szRecvBuf), MSG_DONTWAIT, (struct sockaddr *)&SockAddr,&ScokAddrLen);
UDP socket 设置为的阻塞模式 :
Len = recvfrom(SocketFD, szRecvBuf, sizeof(szRecvBuf), 0, (struct sockaddr *)&SockAddr,&ScokAddrLen);