File transfer examples

master
Mark Qvist 2014-05-26 18:15:48 +02:00
parent 34a5a592b0
commit 4f2a7905f3
3 changed files with 19 additions and 21 deletions

View File

@ -60,9 +60,6 @@ int main(int argc, char **argv) {
file_name = argv[argc-1];
}
printf("File %s\n",file_name);
printf("Socket %s\n",socket_path);
fd = fopen(file_name, "w+");
if (fd == NULL) {
printf("Could not open output file\n");
@ -86,7 +83,8 @@ int main(int argc, char **argv) {
exit(1);
}
printf("Connected to WiPacket\n");
if (verbose) printf("Connected to WiPacket\n");
printf("Waiting for file...\n");
fd_set wiSocketSet;
struct timeval timeout;
@ -111,11 +109,10 @@ int main(int argc, char **argv) {
if (socketReady == 1) {
sRead = recv(wiSocket, sBuffer, PACKET_SIZE, 0);
if (sRead != 0) {
printf("Read %d bytes\n", sRead);
memcpy(&fragment, sBuffer, HEADER_SIZE);
if (fragment == ack+1) {
printf("Got fragment %lu\n", fragment);
if (verbose) printf("Got fragment %lu (%d bytes)\n", fragment, sRead);
ack++;
if ((fwrite(sBuffer+HEADER_SIZE, 1, sRead - HEADER_SIZE, fd)) != sRead - HEADER_SIZE) {
printf("Error while writing received data to file\n");
@ -130,14 +127,20 @@ int main(int argc, char **argv) {
}
if (ack > 0 && fragment == 0) {
fclose(fd);
printf("File received\n");
ack = 0;
memcpy(aBuffer, &ack, HEADER_SIZE);
if (send(wiSocket, aBuffer, HEADER_SIZE, 0) < 0) {
printf("Error writing to WiPacket socket while sending ACK\n");
exit(1);
}
done = true;
}
}
}
}
fclose(fd);
return 0;
}

View File

@ -60,9 +60,6 @@ int main(int argc, char **argv) {
file_name = argv[argc-1];
}
printf("File %s\n",file_name);
printf("Socket %s\n",socket_path);
fd = fopen(file_name, "r");
if (fd == NULL) {
printf("Could not input file\n");
@ -87,7 +84,8 @@ int main(int argc, char **argv) {
exit(1);
}
printf("Connected to WiPacket\n");
if (verbose) printf("Connected to WiPacket\n");
printf("Sending file...\n");
fd_set wiSocketSet;
struct timeval timeout;
@ -108,7 +106,7 @@ int main(int argc, char **argv) {
printf("Error writing to WiPacket socket\n");
exit(1);
}
printf("Sent fragment %lu\n", fragment);
if (verbose) printf("Sent fragment %lu\n", fragment);
FD_ZERO(&wiSocketSet);
FD_SET(wiSocket, &wiSocketSet);
@ -124,19 +122,18 @@ int main(int argc, char **argv) {
if (socketReady == 1) {
sRead = recv(wiSocket, sBuffer, PACKET_SIZE, 0);
if (sRead != 0) {
printf("Read %d bytes\n", sRead);
memcpy(&ack, sBuffer, HEADER_SIZE);
if (ack == fragment) {
gotAck = true;
} else {
printf("Got a response, but not correct ACK\n");
if (verbose) printf("Got a response, but not correct ACK\n");
}
}
}
}
printf("Got ACK for fragment %lu, moving on...\n", fragment);
if (verbose) printf("Got ACK for fragment %lu, moving on...\n", fragment);
}
// File transmitted, send EOF packet
@ -150,7 +147,7 @@ int main(int argc, char **argv) {
printf("Error writing to WiPacket socket\n");
exit(1);
}
printf("Sent EOF packet\n");
if (verbose) printf("Sent EOF packet\n");
FD_ZERO(&wiSocketSet);
FD_SET(wiSocket, &wiSocketSet);
@ -166,13 +163,12 @@ int main(int argc, char **argv) {
if (socketReady == 1) {
sRead = recv(wiSocket, sBuffer, PACKET_SIZE, 0);
if (sRead != 0) {
printf("Read %d bytes\n", sRead);
memcpy(&ack, sBuffer, HEADER_SIZE);
if (ack == fragment) {
gotAck = true;
} else {
printf("Got a response, but not correct ACK\n");
if (verbose) printf("Got a response, but not correct ACK\n");
}
}
}

1
main.c
View File

@ -204,7 +204,6 @@ int main(int argc, char **argv) {
nReadLength = recvfrom(netSocket, packetBuffer, PAYLOAD_LENGTH+14, 0, &saddr, (socklen_t*)&saddr_size);
if (nReadLength > 0) {
printf("Putting into domain socket...\n");
if (protocolIdMatch(packetBuffer) && notMine(packetBuffer)) {
if (send(connection, packetBuffer+14, nReadLength-14, 0) < 0) {
if (verbose) printf("Error writing packet to domain socket\n");