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

fix

parent 1070b854
Branches
No related tags found
No related merge requests found
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
char valueToSend[256] = {'\0'};
char valueToReceive[256] = {'\0'};
char iterationsServer[256] = {'\0'};
int iterations;
printf("Inserire il numero di iterazioni: ");
scanf("%d", &iterations);
snprintf(iterationsServer, sizeof(iterationsServer), "%d", iterations);
int simpleSocket = 0;
int simplePort = 0;
int returnStatus = 0;
char buffer[256] = "";
struct sockaddr_in simpleServer;
if (argc != 3)
{
fprintf(stderr, "Usage: %s <server> <port>\n", argv[0]);
exit(1);
}
/* create a streaming socket */
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 connecting */
simplePort = atoi(argv[2]);
/* setup the address structure */
/* use the IP address sent as an argument for the server address */
// bzero(&simpleServer, sizeof(simpleServer));
memset(&simpleServer, '\0', sizeof(simpleServer));
simpleServer.sin_family = AF_INET;
// inet_addr(argv[2], &simpleServer.sin_addr.s_addr);
simpleServer.sin_addr.s_addr = inet_addr(argv[1]);
simpleServer.sin_port = htons(simplePort);
/* connect to the address and port with our socket */
returnStatus = connect(simpleSocket, (struct sockaddr *)&simpleServer,
sizeof(simpleServer));
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(valueToSend));
for (int i = 0; i < iterations; ++i)
{
/* get the message from the server */
// returnStatus = read(simpleSocket, buffer, sizeof(buffer));
printf("Inserire il valore da voler inviare al server: ");
scanf("%s", valueToSend);
write(simpleSocket, valueToSend, strlen(valueToSend));
read(simpleSocket, valueToReceive, sizeof(valueToReceive));
printf("\n\nEcho: %s\n", valueToReceive);
close(simpleSocket);
}
close(simpleSocket);
return 0;
}
all: client server
client: client.c
gcc client.c -o client
server: server.c
gcc server.c -o server
clean:
rm -f client server
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
// const char MESSAGE[] = "Guess who's back!\n";
int main(int argc, char *argv[])
{
int simpleSocket = 0;
int simplePort = 0;
int returnStatus = 0;
struct sockaddr_in simpleServer;
if (argc < 1 || argc > 2)
{
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);
}
/* lets listen on the socket for connections */
returnStatus = listen(simpleSocket, 5);
if (returnStatus == -1)
{
fprintf(stderr, "Cannot listen on socket!\n");
close(simpleSocket);
exit(1);
}
struct sockaddr_in clientName = {0};
int simpleChildSocket = 0;
int clientNameLength = sizeof(clientName);
/* wait here */
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));
while (1)
{
// Read message from client
read(simpleChildSocket, bufferRead, sizeof(bufferRead));
printf("Received: %s\n", bufferRead);
char valueToSend[256] = {'\0'};
snprintf(valueToSend, sizeof(valueToSend), "%s", bufferRead);
write(simpleChildSocket, valueToSend, sizeof(valueToSend));
close(simpleChildSocket);
}
close(simpleSocket);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment