一、重发消息有两个原因:
①接收方未收到,此时重发是应该的。②接收方收到消息但是发回的应答包丢失了,此时重发消息则重复了,所以在接收方还得添加一个机制:若收到的消息与以前发过的消息重复,则再次发送应答包。在这些机制下,能够初步的保证UDP传输的完整性。为了UDP包不在IP层上被分片,所以设计UDP包每个不得大于以太网的MTU.采用相互握手重发
二、直接看代码
public void run() {
try{
String local_path = Environment.getExternalStorageDirectory().getPath() +"/gateway_update_file/"+ file_name;
File local_file =new File(local_path);
int size =new Long(local_file.length()).intValue();//文件总的大小
System.out.println("文件总的大小"+" = "+ size);
if(size ==0) {
//当前文件为0,重新获取文件
//........
return;
}
//SEND_SIZE此变量为每包发送的大小(跟接收返回的发送包大小)
PACKETS= (size /SEND_SIZE) +1;//跟接收方定义的接收总的包数(即发送多少包)
InetAddress inetAddress = InetAddress.getByName(GW_IP_ADDRES