TP1 SD Inf3
TP1 SD Inf3
TP1 SD Inf3
1. Le code suivant permet de créer une socket cliente. Essayer de comprendre le code, le
saisir , le compiler et l’exécuter. Avec la commande nc ou netstat retrouvé le port
utilisé.
/* Client pour les sockets
* socket_client ip_server port
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
/*
* partie client
*/
printf ("client starting\n");
/* ouvre le socket */
if ((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{printf("socket error\n");exit(0);}
/* effectue la connection */
if (connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{printf("socket error\n");exit(0);}
return 1;
}
1. Le code suivant permet de créer une socket Serveur. Essayer de comprendre le code,
le saisir , le compiler et l’exécuter. Avec la commande nc ou netstat retrouvé le port
utilisé.
/* Serveur sockets TCP
* affichage de ce qui arrive sur la socket
* socket_server port (port > 1024 sauf root)
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
/* ouverture du socket */
sockfd = socket (AF_INET,SOCK_STREAM,0);
if (sockfd<0) {printf ("impossible d'ouvrir le socket\n");exit(0);}
/* effecture le bind */
if (bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{printf ("impossible de faire le bind\n");exit(0);}
/* petit initialisation */
listen(sockfd,1);
while (1)
{ while (read(newsockfd,&c,1)!=1);
printf("%c",c);
}
return 1;
}
3 Que font les deux programmes ? Tester sur la même machine puis sur deux machines.