Skip to content
Snippets Groups Projects
Commit 81f1b68f authored by Gianluca Mastrolonardo's avatar Gianluca Mastrolonardo
Browse files

es finito

parent 9bcd8277
No related branches found
No related tags found
No related merge requests found
No preview for this file type
...@@ -7,91 +7,92 @@ ...@@ -7,91 +7,92 @@
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
void clean_buffer(void* buffer, size_t buffer_size){ void clean_buffer(void *buffer, size_t buffer_size) {
char* bufferChar = (char *) buffer; char *bufferChar = (char *)buffer;
for(size_t i = 0; i < buffer_size; ++i){ for (size_t i = 0; i < buffer_size; ++i) {
bufferChar[i] = '\0'; bufferChar[i] = '\0';
} }
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[]) {
{ char valueToSend[256] = {'\0'};
char valueToSend[256] = {'\0'}; char valueToReceive[256] = {'\0'};
char valueToReceive[256] = {'\0'}; char iterationsServer[256] = {'\0'};
char iterationsServer[256] = {'\0'};
printf("Inserire il numero di iterazioni: ");
printf("Inserire il numero di iterazioni: "); scanf("%s", iterationsServer);
scanf("%s", iterationsServer);
int simpleSocket = 0;
int simpleSocket = 0; int simplePort = 0;
int simplePort = 0; int returnStatus = 0;
int returnStatus = 0; char buffer[256] = "";
char buffer[256] = ""; struct sockaddr_in simpleServer;
struct sockaddr_in simpleServer;
if (argc != 3) {
if (argc != 3) fprintf(stderr, "Usage: %s <server> <port>\n", argv[0]);
{ exit(1);
fprintf(stderr, "Usage: %s <server> <port>\n", argv[0]); }
exit(1);
} /* create a streaming socket */
simpleSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
/* create a streaming socket */
simpleSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (simpleSocket == -1) {
fprintf(stderr, "Could not create a socket!\n");
if (simpleSocket == -1) exit(1);
{ } else {
fprintf(stderr, "Could not create a socket!\n"); fprintf(stderr, "Socket created!\n");
exit(1); }
}
else /* retrieve the port number for connecting */
{ simplePort = atoi(argv[2]);
fprintf(stderr, "Socket created!\n");
} /* setup the address structure */
/* use the IP address sent as an argument for the server address */
/* retrieve the port number for connecting */ // bzero(&simpleServer, sizeof(simpleServer));
simplePort = atoi(argv[2]); memset(&simpleServer, '\0', sizeof(simpleServer));
simpleServer.sin_family = AF_INET;
/* setup the address structure */ // inet_addr(argv[2], &simpleServer.sin_addr.s_addr);
/* use the IP address sent as an argument for the server address */ simpleServer.sin_addr.s_addr = inet_addr(argv[1]);
// bzero(&simpleServer, sizeof(simpleServer)); simpleServer.sin_port = htons(simplePort);
memset(&simpleServer, '\0', sizeof(simpleServer));
simpleServer.sin_family = AF_INET; /* connect to the address and port with our socket */
// inet_addr(argv[2], &simpleServer.sin_addr.s_addr); returnStatus = connect(simpleSocket, (struct sockaddr *)&simpleServer,
simpleServer.sin_addr.s_addr = inet_addr(argv[1]); sizeof(simpleServer));
simpleServer.sin_port = htons(simplePort);
if (returnStatus == 0) {
/* connect to the address and port with our socket */ fprintf(stderr, "Connect successful!\n");
returnStatus = connect(simpleSocket, (struct sockaddr *)&simpleServer, } else {
sizeof(simpleServer)); fprintf(stderr, "Could not connect to address!\n");
if (returnStatus == 0)
{
fprintf(stderr, "Connect successful!\n");
}
else
{
fprintf(stderr, "Could not connect to address!\n");
close(simpleSocket);
exit(1);
}
// Inviando il numero di iterazioni al server
write(simpleSocket, iterationsServer, strlen(iterationsServer));
// Aspettando l'ACK
read(simpleSocket, valueToReceive, sizeof(valueToReceive));
printf("%s\n", valueToReceive);
int iterations = atoi(iterationsServer);
for (int i = 0; i < iterations; ++i)
{
clean_buffer((void *) valueToReceive, sizeof(valueToReceive));
printf("Inserire il valore da voler inviare al server: ");
scanf("%s", valueToSend);
write(simpleSocket, valueToSend, strlen(valueToSend));
read(simpleSocket, valueToReceive, sizeof(valueToReceive));
printf("\nEcho: %s\n", valueToReceive);
}
close(simpleSocket); close(simpleSocket);
return 0; exit(1);
}
// Inviando il numero di iterazioni al server
write(simpleSocket, iterationsServer, strlen(iterationsServer));
// Aspettando l'ACK
read(simpleSocket, valueToReceive, sizeof(valueToReceive));
if (strcmp(valueToReceive, "ACK") != 0) {
fprintf(stderr, "Invalid ACK");
exit(0);
}
printf("%s\n", valueToReceive);
int iterations = atoi(iterationsServer);
for (int i = 0; i < iterations; ++i) {
clean_buffer((void *)valueToReceive, sizeof(valueToReceive));
printf("Inserire il valore da voler inviare al server: ");
scanf("%s", valueToSend);
write(simpleSocket, valueToSend, strlen(valueToSend));
read(simpleSocket, valueToReceive, sizeof(valueToReceive));
printf("\nEcho: %s\n", valueToReceive);
}
// Mando BYE
clean_buffer((void *)valueToSend, sizeof(valueToSend));
snprintf(valueToSend, sizeof(valueToSend), "BYE");
write(simpleSocket, valueToSend, sizeof(valueToSend));
close(simpleSocket);
return 0;
} }
No preview for this file type
...@@ -9,129 +9,120 @@ ...@@ -9,129 +9,120 @@
// const char MESSAGE[] = "Guess who's back!\n"; // const char MESSAGE[] = "Guess who's back!\n";
void clean_buffer(void* buffer, size_t buffer_size){ void clean_buffer(void *buffer, size_t buffer_size) {
char* bufferChar = (char *) buffer; char *bufferChar = (char *)buffer;
for(size_t i = 0; i < buffer_size; ++i){ for (size_t i = 0; i < buffer_size; ++i) {
bufferChar[i] = '\0'; bufferChar[i] = '\0';
} }
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[]) {
{ int simpleSocket = 0;
int simpleSocket = 0; int simplePort = 0;
int simplePort = 0; int returnStatus = 0;
int returnStatus = 0; struct sockaddr_in simpleServer;
struct sockaddr_in simpleServer;
if (argc < 1 || argc > 2) {
if (argc < 1 || argc > 2) fprintf(stderr, "Usage: %s <port>\n", argv[0]);
{ exit(1);
fprintf(stderr, "Usage: %s <port>\n", argv[0]); }
exit(1);
simpleSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (simpleSocket == -1) {
fprintf(stderr, "Could not create a socket!\n");
exit(1);
} else {
fprintf(stderr, "Socket created!\n");
}
/* retrieve the port number for listening */
if (argc == 2) {
simplePort = atoi(argv[1]);
if (simplePort < 10000 || simplePort > 12000) {
fprintf(stderr, "Port must be in range [10000, 12000]\n");
exit(1);
} }
} else {
srand(time(NULL));
simplePort = (rand() % 1999) + 10000;
}
/* setup the address structure */
/* use INADDR_ANY to bind to all local addresses */
memset(&simpleServer, '\0', sizeof(simpleServer));
simpleServer.sin_family = AF_INET;
simpleServer.sin_addr.s_addr = htonl(INADDR_ANY);
simpleServer.sin_port = htons(simplePort);
/* bind to the address and port with our socket */
returnStatus = bind(simpleSocket, (struct sockaddr *)&simpleServer,
sizeof(simpleServer));
if (returnStatus == 0) {
fprintf(stderr, "Bind completed on port %d!\n", simplePort);
} else {
fprintf(stderr, "Could not bind to address!\n");
close(simpleSocket);
exit(1);
}
simpleSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); /* lets listen on the socket for connections */
returnStatus = listen(simpleSocket, 5);
if (simpleSocket == -1)
{
fprintf(stderr, "Could not create a socket!\n"); if (returnStatus == -1) {
exit(1); fprintf(stderr, "Cannot listen on socket!\n");
} close(simpleSocket);
else exit(1);
{ }
fprintf(stderr, "Socket created!\n");
} struct sockaddr_in clientName = {0};
int simpleChildSocket = 0;
/* retrieve the port number for listening */ int clientNameLength = sizeof(clientName);
if (argc == 2)
{ /* wait here */
simplePort = atoi(argv[1]); while (1) {
if (simplePort < 10000 || simplePort > 12000) simpleChildSocket =
{ accept(simpleSocket, (struct sockaddr *)&clientName, &clientNameLength);
fprintf(stderr, "Port must be in range [10000, 12000]\n");
exit(1); if (simpleChildSocket == -1) {
} fprintf(stderr, "Cannot accept connections!\n");
} close(simpleSocket);
else exit(1);
{
srand(time(NULL));
simplePort = (rand() % 1999) + 10000;
} }
/* setup the address structure */ char bufferRead[256] = {'\0'};
/* use INADDR_ANY to bind to all local addresses */ read(simpleChildSocket, bufferRead, sizeof(bufferRead));
memset(&simpleServer, '\0', sizeof(simpleServer)); printf("Num Iterazioni: %s\n", bufferRead);
simpleServer.sin_family = AF_INET; int iterations = atoi(bufferRead);
simpleServer.sin_addr.s_addr = htonl(INADDR_ANY);
simpleServer.sin_port = htons(simplePort); // Send ACK
char bufferWrite[256] = {'\0'};
/* bind to the address and port with our socket */ snprintf(bufferWrite, sizeof(bufferWrite), "ACK");
returnStatus = bind(simpleSocket, (struct sockaddr *)&simpleServer, write(simpleChildSocket, bufferWrite, sizeof(bufferWrite));
sizeof(simpleServer));
for (int i = 0; i < iterations; ++i) {
if (returnStatus == 0) clean_buffer((void *)bufferRead, sizeof(bufferRead));
{ clean_buffer((void *)bufferWrite, sizeof(bufferWrite));
fprintf(stderr, "Bind completed on port %d!\n", simplePort);
} char bufferRead[256] = {'\0'};
else // Read message from client
{ read(simpleChildSocket, bufferRead, sizeof(bufferRead));
fprintf(stderr, "Could not bind to address!\n"); printf("\tReceived: %s\n", bufferRead);
close(simpleSocket); char bufferWrite[256] = {'\0'};
exit(1); snprintf(bufferWrite, sizeof(bufferWrite), "%s", bufferRead);
write(simpleChildSocket, bufferWrite, sizeof(bufferWrite));
} }
/* lets listen on the socket for connections */ // Wait for BYE
returnStatus = listen(simpleSocket, 5); clean_buffer((void *)bufferRead, sizeof(bufferRead));
read(simpleChildSocket, bufferRead, sizeof(bufferRead));
if (returnStatus == -1) printf("%s\n", bufferRead);
{
fprintf(stderr, "Cannot listen on socket!\n");
close(simpleSocket);
exit(1);
}
struct sockaddr_in clientName = {0}; close(simpleChildSocket);
int simpleChildSocket = 0; }
int clientNameLength = sizeof(clientName); close(simpleSocket);
return 0;
/* wait here */
while(1){
simpleChildSocket =
accept(simpleSocket, (struct sockaddr *)&clientName, &clientNameLength);
if (simpleChildSocket == -1)
{
fprintf(stderr, "Cannot accept connections!\n");
close(simpleSocket);
exit(1);
}
char bufferRead[256] = {'\0'};
read(simpleChildSocket, bufferRead, sizeof(bufferRead));
printf("Num Iterazioni: %s\n", bufferRead);
int iterations = atoi(bufferRead);
//Send ACK
char bufferWrite[256] = {'\0'};
snprintf(bufferWrite, sizeof(bufferWrite), "ACK");
write(simpleChildSocket, bufferWrite, sizeof(bufferWrite));
for (int i = 0; i < iterations; ++i)
{
clean_buffer((void *) bufferRead, sizeof(bufferRead));
clean_buffer((void *) bufferWrite, sizeof(bufferWrite));
char bufferRead[256] = {'\0'};
// Read message from client
read(simpleChildSocket, bufferRead, sizeof(bufferRead));
printf("\tReceived: %s\n", bufferRead);
char bufferWrite[256] = {'\0'};
snprintf(bufferWrite, sizeof(bufferWrite), "%s", bufferRead);
write(simpleChildSocket, bufferWrite, sizeof(bufferWrite));
}
close(simpleChildSocket);
}
close(simpleSocket);
return 0;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment