Prog c sockets TCP/IP réseaux local unix/win

Fermé
numok Messages postés 2 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 7 avril 2008 - 7 avril 2008 à 15:11
 the spécialist - 11 avril 2008 à 14:13
Bonjour,
je suis étudiant en informatique et j'ai une parti de mon projet qui m'empêche d'avancer.

En effet notre objectif est d'ecrire un programme qui a partir d'une adresse IP litterale fournie en argument,affiche l'adresse IP numériques sous forme décimale pointé,tout cela en langage C.

voici les données:

1 OBJECTIF :
Programmer les sockets TCP/IP sur réseau local de type UNIX et Windows.
Matériel : stations de type PC avec Windows XP/Linux.
compétences : programmation (C/C++), connaissance des commandes UNIX de base. Tout appel
système devra être testé.
2 ADRESSAGE IP
On rappelle les structures relatives à l'adressage Internet ainsi que quelques utilitaires de
manipulation.
#include <netinet/in.h>
struct in_addr { u_long s_addr; };
struct sockaddr_in {
short int sin_family; // domaine AF_INET
u_short int sin_port; // port de la socket
struct in_addr sin_addr; // N° IP de la machine au format réseau
unsigned char sin_zero[8]; // 8 charactères nuls de bourrage
};
struct in_addr {
unsigned long s_addr; // IP address 32-bit
};
Network byte order is “most significant byte first”
1.2.3.4 stored as Host byte order could be either “most significant byte first” or “least significant
byte first”
There are functions to convert a number between host and network byte order:
long htonl(long)
short htons(short)
long ntohl(long)
short ntohs(short)
To obtain a 32-bit address in network order from a string :
long inet_addr(“1.2.3.4”)
To obtain a dotted-notation string from the address in 32-bit :
char* inet_ntoa(struct in_addr)
La fonction gethostbyname (rechercher une machine par son nom) accepte un nom de domaine et
renvoie un pointeur vers une structure qui contient l'information relative à cette machine. L'appel est
le suivant :
ptr = gethostbyname (char *chaine_nom) ;
la structure où gethostbyname met les informations est la suivante :
struct hostent {
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
};
#define h_addr h_addr_list[0] /* pour compatibilité. */
Ecrire un programme qui à partir d'une adresse IP littérale fournie en argument, affiche l'adresse IP
numérique sous forme décimale pointée.
La fonction gethostbyaddr ( rechercher une machine par son adresse) produit le
même résultat . La différence entre les deux est que cette fonction a pour argument
l'adresse de la machine.
ptr = gethostbyaddr (char *addr,int lgr,int type ) ;
addr pointe vers l'adresse de la machine.
lgr longueur de l'adresse.
type indique le type d'adresse ( adresse IP par exemple ).

Ecrire un programme qui à partir d'une adresse IP numérique fournie en argument, affiche l'adresse
IP sous forme littérale (on utilisera struct in_addr).

Avis aux fan de programmation et de réseau de m'aider,merci beaucoup.


Cordialement
A voir également:

1 réponse

the spécialist
11 avril 2008 à 14:13
Passe moi ton mail, je te file le code

@+
1