Linux网络编程UDP过程遇到的问题记录


几天来写的代码,一经测试,竟然最基本的练级都没有成功。甚是失望~整了两天的时间终于解决了该些问题。现在记录下来。

first of all,关于sendto()和recvfrom()的参数问题。recvfrom()的最后的一个参数lenth是指针整型的,而sendto()是普通整形,看了那么长时间的书竟然刚发现这个问题,甚是汗颜。如果在这两个参数错误,perror()会提示“address error”。

sencondly,关于ip地址的表示。格式:“x.x.x.x"是为了便于用户阅读,所形式话成的字符串。所以通常#define的时候需要加”“符号。但port是一个短整形的,所以#define的时候不需要加引号。

thirdly,不要把addr_inet 系列函数与htons()系列函数混淆。它们包含在不同的类库中。

additionally,编码过程中需要有一下几个原则。一,代码结构尽量的简单,要学会使用各种数据结构及union、#typedef等关键次。二,自定义的函数的参数尽量向需要使用的函数的参数的类型靠拢。3,注意指针参数的使用。

last,是关于调试的时候如果发现错误,不要犯理所当然的把错误锁定在自己认为的地方,也许,如果始终找不出错误的话也许该把注意里放到别的范围内,也许错误是发生在其它位置,或者错误类型为其它。

相关内容