Salve a tutti,sono nuovo del forum e volevo chiedere cortesemente il vostro aiuto riguardo questo programma.
La consegna è questa:
Il mittente invia un messaggio e attende dal destinatario una conferma positiva (ACK), negativa (NAK); se scade il tempo di attesa per uno di questi due, il mittente provvederà a rispedire il pacchetto e il destinatario si incaricherà di scartare eventuali repliche. Nel caso in cui si verificasse un errore nella trasmissione del segnale di conferma (ACK), il mittente provvederà a rinviare il pacchetto; il destinatario riceverà in questo modo una copia del pacchetto già ricevuto, credendo che gli sia pervenuto un nuovo pacchetto. Per ovviare a questo problema si può procedere numerando i pacchetti trasmessi, ovvero inserendo un bit di conteggio.
Allego qui il mio codice incompleto:
#include <stdio.h>
#include <windows.h>
void destinatario(int pac){
Sleep(3000);
printf("\nRicevuto\n");
Sleep(1000);
printf("\nTrasmissione ACK...\n");
}
main(){
int i;
int pacchetti[10]// array di simulazione pacchetti;
Sleep(1000);
printf("\n\nInizio spedizione pacchetti........\n");
for(i=1;i<=10;i++){
Sleep(1000);
printf("\n\nSpedizione pacchetto numero %d\n",i);
Sleep(2000);
destinatario(pacchetti);
Sleep(3000);
printf("\nRicezione avvenuta\n");
Sleep(2000);
}
}
Il mio problema è gestire la funzione destinario(invio ack o nack),far scattare il timeout in caso con conseguente rispedizione del pacchetto.
Aspetto gentilmente il vostro aiuto.
Grazie in anticipo.
Ultima modifica effettuata da champ il 10/06/2009 alle 11:59 |