关于UDP使用的几点探究

对于UDP的使用,之前一直存有疑问,今天借助NAT实验的机会将其探究一番,终有收获。
其一、在默认情况下,recfrom函数是阻塞方式,之前之所出现不稳定的情况是因为在执行该函数的时候出现Error,而这个Error的情况则是有很多种情况,如地址绑定错误、端口错误,最为容易忽视的错误则是参数错误,该函数的最后一个参数是以指针的形式存在,而这个参数既是输入也是输出,正式这个输入容易使人忽视而导致出现不可理解的莫名其妙的错误,这个参数的值的设置经测试,只有满足大于等于sizeof(SOCKADDR_IN)即可正常工作。
其二、对于inet_addr函数,执行完该函数之后,返回值已经是满足网络字节顺序的要求,无需在使用htonl函数,而这里有个与之相反的函数inet_ntoa,实现从二进制形式到字符串形式的转换。
其三、对于UDP通信而言,完全可以实现自发自收的效果,前提是端口号和IP地址必须一致,而这点在TCP中将导致端口冲突,是不可实现的。
其四、本机如果地址绑定的是INADDR_ANY的话,在接收端出现的源端地址可能是127.0.0.1。
其五、对于UDP传输,如果使用本地回环地址(127.0.0.1)调试运行时,容易出现错误代码为10054的错误,此时应当先运行充当服务器功能的程序。
其六、对于网络编程的调试,在无法准确定位bug的情况下,一个比较好的做法就是输出每个数据包。
发布了22 篇原创文章 · 获赞 3 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章