File transfer examples
parent
34a5a592b0
commit
4f2a7905f3
|
@ -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;
|
||||
}
|
|
@ -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
1
main.c
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue