Différence TCP & UDP

TCP (SOCK_STREAM)

UDP (SOCK_DGRAM)

Architecture

A Savoir

  1. Conversions réseau :

TCP

Général

  1. Ordre des opérations :

Client

// Création du socket
int sockfd = socket(AF_INET, SOCK_STREAM, 0);

// Configuration de l'adresse
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
inet_aton("127.0.0.1", &serv_addr.sin_addr);

// Connexion
connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));

// Lecture console et envoi
char buffer[1024];
fgets(buffer, sizeof(buffer), stdin);
write(sockfd, buffer, strlen(buffer));

// Fermeture
close(sockfd);

Serveur TCP (1 client)

// Création du socket
int server_fd = socket(AF_INET, SOCK_STREAM, 0);

// Configuration de l'adresse
struct sockaddr_in address;
address.sin_family = AF_INET;
address.sin_port = htons(PORT);
address.sin_addr.s_addr = htonl(INADDR_ANY);

// Bind
bind(server_fd, (struct sockaddr*)&address, sizeof(address));

// Listen
listen(server_fd, 3);

// Accept
struct sockaddr_in client_addr;
int client_len = sizeof(client_addr);
int client_fd = accept(server_fd, (struct sockaddr*)&client_addr, &client_len);

// Info client
printf("Client IP: %s\\n", inet_ntoa(client_addr.sin_addr));
printf("Client Port: %d\\n", ntohs(client_addr.sin_port));

// Lecture données
char buffer[1024];
read(client_fd, buffer, sizeof(buffer));

// Fermeture
close(client_fd);
close(server_fd);