几点注意事项:
1、 使用recvfrom 接收应答方地址,对应答方进行身份检测
利用memcpy函数比较地址是否一致。
2、 sendto 操作成功返回仅仅表示在接口输出队列中具有存放所形成的IP数据报的空间。而不检验目的地址是否可达。如果需要检查目的地址的话应使用connect
3、 当服务端无应答时,recvfrom会一直阻塞,解决的方法有三种: 1) 利用中段SIGALRM信号,检查recvfrom的errno是否等于EINTR。2) 使用select设置超时(==0 ) 3) 使用SO_RCVTIMEO套接字选项
4、 写一个长度为0的数据报是可行的,这会形成一个只包含ip首部和8字节udp首部而没有数据的ip数据报。所以对于数据报协议,recvfrom返回0值是可接受的:不像tcp套接字上read返回0值表示对端已关闭(FIN信号)。
5、 对于一些场景,需要给udp增加可靠性。