⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selectiverepeat.m

📁 本程序是用java编写的一些关于arq协议实现的小程序
💻 M
📖 第 1 页 / 共 4 页
字号:

while paknum<Nsimul
    
    
    time=time2;
    for i=1:Maxfrn
        test = rand>Ploss;
        framen=rem(paknum,Maxfrn);
        if test
            Pak = [Pak; paknum time time+Ttran+Tprop framen];
        else
            Pak = [Pak; paknum time Inf framen];
            Pak = [Pak; paknum time+Timeout time+2*Timeout-Tprop framen];
        end
    
            time=time+Ttran;
            time2=time+Tprop;
            paknum=paknum+1;
            i=i+1;
            
     end
     
     for j=paknum-Maxfrn+1:paknum
         Ack = [Ack; Pak(j,1) Pak(j,3) Pak(j,3)+Tprop Pak(j,4)];
         j=j+1;
    
     end;
     
 end;
 
 	Umas(1)=LFS*Ttran/time;
    
end;

Nsimul=busysender-1;

while paknum<Nsimul    %iterate until all frames have been sent (Nsimul=total frames, LFS=last frame sent)
    
    framen=rem(paknum,Maxfrn);
    
    test = rand>Ploss;
    if test
        Pak = [Pak; paknum time time+Ttran+Tprop framen];
    else
        Pak = [Pak; paknum time Inf framen];
        Pak = [Pak; paknum time+Timeout time+2*Timeout-Tprop framen];
    end
    
    time=time+Ttran+Tprop;
    paknum=paknum+1;
    
end;

i=1;

while i<=length(Pak)
    
    Ack = [Ack; Pak(i,1) Pak(i,3) Pak(i,3)+Tprop Pak(i,4)];
    i=i+1;
    
    %end;

	Umas(1)=LFS*Ttran/time;

end;


%function [Umas,Pak,Ack]=selectiverepeat(amas,Nsimul,Ploss,SWS);



while LFS<Nsimul    %iterate until all frames have been sent (Nsimul=total frames, LFS=last frame sent)
   
    % disp([time LFS LFA]);
   % disp(stacktimeout)
   
   % resend packets if timeout
   
	ind=find(stacktimeout(:,2)<=time);% find() this returns the packet that just timed out
                                                  %ind is an array of timedout  (row)  
    if length(ind)
         nopak=stacktimeout(1,1);
         if  time>=busysender
            busysender=time+Ttran;      %beginning to send and gives time for when time is up 
            stacktimeout=[nopak time+Timeout];  %overwri
            framen=rem(nopak,Maxfrn);               %assign the packet a frame number 0 sws
            gotit=rand>Ploss;                       
            
            LFS=nopak;      %TO DELETE
                                                                            
            if gotit
               Pak=[Pak; nopak time time+Tprop+Ttran framen];
               stackarrive=[stackarrive; nopak time+Tprop+Ttran];
            else
               Pak=[Pak; nopak time Inf framen];
            end
          
         end         
      end
      
   % if no timeout   we can send new packet

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -