Examples
parent
b4e3bac824
commit
168c41e1fd
|
|
@ -16,6 +16,7 @@ bool verbose = false;
|
|||
int wiSocket;
|
||||
FILE *fd;
|
||||
|
||||
#define RETRIES 10
|
||||
#define TIMEOUT_MSEC 25
|
||||
#define HEADER_SIZE 4
|
||||
#define FRAGMENT_SIZE 1482
|
||||
|
|
@ -90,9 +91,11 @@ int main(int argc, char **argv) {
|
|||
|
||||
fragment = 0;
|
||||
ack = 0;
|
||||
int retries = 0;
|
||||
int sRead;
|
||||
bool done = false;
|
||||
while (!done) {
|
||||
while (!done && retries < RETRIES) {
|
||||
retries++;
|
||||
|
||||
FD_ZERO(&wiSocketSet);
|
||||
FD_SET(wiSocket, &wiSocketSet);
|
||||
|
|
@ -113,6 +116,7 @@ int main(int argc, char **argv) {
|
|||
if (fragment == ack+1) {
|
||||
if (verbose) printf("Got fragment %lu (%d bytes)\n", fragment, sRead-HEADER_SIZE);
|
||||
ack++;
|
||||
retries = 0;
|
||||
if ((fwrite(sBuffer+HEADER_SIZE, 1, sRead - HEADER_SIZE, fd)) != sRead - HEADER_SIZE) {
|
||||
printf("Error while writing received data to file\n");
|
||||
exit(1);
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ bool verbose = false;
|
|||
int wiSocket;
|
||||
FILE *fd;
|
||||
|
||||
#define RETRIES 10
|
||||
#define TIMEOUT_MSEC 25
|
||||
#define HEADER_SIZE 4
|
||||
#define FRAGMENT_SIZE 1482
|
||||
|
|
@ -92,6 +93,7 @@ int main(int argc, char **argv) {
|
|||
fragment = 0;
|
||||
ack = 0;
|
||||
bool gotAck;
|
||||
int retries = 0;
|
||||
int fRead;
|
||||
int sRead;
|
||||
while ((fRead = fread(fBuffer+HEADER_SIZE, 1, FRAGMENT_SIZE, fd))) {
|
||||
|
|
@ -130,18 +132,22 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
retries++;
|
||||
if (retries > RETRIES) {
|
||||
printf("Transfer failed due to timeout\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
if (verbose) printf("Got ACK for fragment %d, moving on...\n", fragment);
|
||||
}
|
||||
|
||||
// File transmitted, send EOF packet
|
||||
retries = 0;
|
||||
fragment = 0;
|
||||
memcpy(fBuffer, &fragment, HEADER_SIZE);
|
||||
gotAck = false;
|
||||
|
||||
while (!gotAck) {
|
||||
|
||||
if (send(wiSocket, fBuffer, HEADER_SIZE, 0) < 0) {
|
||||
printf("Error writing to WiPacket socket\n");
|
||||
exit(1);
|
||||
|
|
@ -171,7 +177,11 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
retries++;
|
||||
if (retries > RETRIES) {
|
||||
printf("Transfer failed due to timeout\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
///////////////////////////////////////
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue