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

il primo messaggio non va, dopo il primo funziona

parent e25d5071
No related branches found
No related tags found
No related merge requests found
File added
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#define MAXSIZEBUFFER 256
int main(int argc, char *argv[]) {
int simpleSocket = 0;
int simplePort = 0;
int returnStatus = 0;
struct sockaddr_in serverAddr, clientAddr;
socklen_t serverSize, clientSize;
char buffer[MAXSIZEBUFFER] = {'\0'};
if (argc != 3) {
fprintf(stderr, "Usage: %s <server> <port>\n", argv[0]);
exit(1);
}
simplePort = atoi(argv[2]);
simpleSocket = socket(AF_INET, SOCK_DGRAM, 0);
if (simpleSocket == -1) {
fprintf(stderr, "Could not create a socket!\n");
exit(1);
} else {
printf("Socket created!\n");
}
memset(&clientAddr, '\0', sizeof(clientAddr));
clientAddr.sin_family = AF_INET;
clientAddr.sin_addr.s_addr = inet_addr(argv[1]);
clientAddr.sin_port = htons(simplePort);
clientSize = sizeof(clientAddr);
printf("Inserisci un valore: ");
scanf("%s", buffer);
sendto(simpleSocket, buffer, strlen(buffer), 0,
(struct sockaddr *)&clientAddr, clientSize);
// Waiting for Echo
memset(buffer, '\0', sizeof(buffer));
recvfrom(simpleSocket, buffer, MAXSIZEBUFFER, 0,
(struct sockaddr *)&serverAddr, &serverSize);
printf("Echo from server: %s\n", buffer);
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
File added
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
#define MAXSIZEBUFFER 256
int main(int argc, char *argv[]) {
int simpleSocket = 0;
int simplePort = 0;
int returnStatus = 0;
struct sockaddr_in clientAddr, serverAddr;
socklen_t clientSize, serverSize;
char buffer[MAXSIZEBUFFER] = {'\0'};
if (argc < 1 || argc > 2) {
fprintf(stderr, "Usage: %s <port>\n", argv[0]);
exit(1);
}
// Creating UDP Socket
simpleSocket = socket(AF_INET, SOCK_DGRAM, 0);
if (simpleSocket == -1) {
fprintf(stderr, "Could not create a socket!\n");
exit(1);
} else {
printf("Socket created!\n");
}
// if available use argv[1] for port number, else generate a randome one
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;
// simplePort = 11100;
}
// Setup the address structure of the destination
// use INADDR_ANY to bind to all local addresses
serverSize = sizeof(serverAddr);
memset(&serverAddr, '\0', serverSize);
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
serverAddr.sin_port = htons(simplePort);
returnStatus = bind(simpleSocket, (struct sockaddr *)&serverAddr, serverSize);
if (returnStatus != 0) {
fprintf(stderr, "Error, Impossible to Bind Socket\n");
exit(1);
} else {
printf("Bind Complete on %d!\n", simplePort);
}
while (1) {
// Recive from client
memset(buffer, '\0', sizeof(buffer));
recvfrom(simpleSocket, buffer, MAXSIZEBUFFER, 0,
(struct sockaddr *)&clientAddr, &clientSize);
printf("Received: '%s' | Sender IP: '%s'\n", buffer,
inet_ntoa(clientAddr.sin_addr));
// Send to client
sendto(simpleSocket, buffer, strlen(buffer), 0,
(struct sockaddr *)&clientAddr, clientSize);
}
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