Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1651 connectés 

  FORUM HardWare.fr
  Programmation
  C

  prog reseseaux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

prog reseseaux

n°926808
yartempion
Posté le 18-12-2004 à 11:26:45  profilanswer
 

Bonjour a tous,
J'essaie de faire des petits bouts de programme pour tester des connection en ip mais je bute sur un pbl.
Si sur une machine linux mandrake on dispose d'un modem comment associer une socket a une liaison modem. La fonction bind() elle ne fait que l'association @ip a une socket moi je cherche a forcer sur tel ou tel interface phisique. Quand il s'agit de passer par une carte reseau le pbl est plus simple puisque l@ip est sur celle ci mais pour forcer sur un modem. Et comment va un prog en envoyer des commandes AT au moedm.

mood
Publicité
Posté le 18-12-2004 à 11:26:45  profilanswer
 

n°934555
rolphin
Posté le 31-12-2004 à 11:23:28  profilanswer
 


Tu confonds laision physique et liaison logiciel,
un modem te permet d'établir une connexion, Ethernet via PPP ou PPTP ou L2TP ou d'autre. Après tu encapsules ce que tu veux.  
 
Ton modem va établir une connexion qui permettra d'obtenir une interface, et ensuite seulement tu pourras appeler bind.

n°934562
manatane
En vous remerciant, bonsoir
Posté le 31-12-2004 à 11:39:25  profilanswer
 

ppp regroupe les couches réseau et liaison. Pour ce qui est du routage, c'est le noyau qui se débrouille.
Bref tu te contente juste de passer un drapeau approprié à la routine socket, il me semble tu n'a pas vraiment la possibilité ni d'interet à faire autrement, dumoins me semble t'il...

n°936155
yartempion
Posté le 03-01-2005 à 22:10:14  profilanswer
 

Je connais tous ces principes, mais si je dispose de eux liaison, par exemple de deux modem sur deux ports com donc je dispose de deux liaison phisiques por etablir des commucations. Si je veut forcer sur une des deux interfaces le seul moyen que je connaisse actuellement sans passer par unn equipement reseau c'est de disposer deux deux @ip, une pour chaque liaison et avec bind d'associer ma soket a une des deux. Dans ce cas est ce que les ports  com peuvent recevoir des @ip com les cartes reseaux? Ou alors comment fait on?
 

n°936184
Exo 7
Posté le 03-01-2005 à 22:35:11  profilanswer
 

fait un effort sur l'orthographe c'est incompréhensible.
 
Il suffit de mettre le bon ifindex dans la sockaddr_ll.
Tu obtiens les ifindex des cartes réseaux detectés via des iocontrol.

n°936211
yartempion
Posté le 04-01-2005 à 01:03:39  profilanswer
 

Je n'ai jamais entendu parler de sockaddr_ll et les ioctl je connais patiquement que le nom j'ai jamais utilise cette fonction. Peu tu me renseigner je vais faire  des recherches en attendant merci.

n°936758
Exo 7
Posté le 04-01-2005 à 15:43:32  profilanswer
 

Soit tu crées une socket pour TCP (SOCK_STREAM) ou UDP (SOCK_DGRAM) et tu laisses le système traité le paquet par sa pile IP, soit tu crées une socket en mode raw (SOCK_RAW) qui attaque le paquet au niveau 2 et tu dois tout faire toi même.
 
 

Code :
  1. #define DEVICENAME "eth0"
  2. struct ifreq ifr;
  3. struct sockaddr_ll sock;
  4. int sockfd, counter;
  5. strcpy(ifr.ifr_name, DEVICENAME);
  6. sockfd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
  7. if(sockfd <= 0) perror("error creating raw socket. Are you root ?\n" );
  8. if(ioctl(sockfd, SIOCGIFINDEX, &ifr) < 0) perror("error with IOCTL\n" );
  9. sock.sll_ifindex = ifr.ifr_ifindex;


 
dans ton paquet tu dois t'occuper des entetes de niveau 2 et 3. voir les struct ether_header et iphdr. Tu envois ensuite le paquet sur l'interface que tu as décidé (DEVICENAME).
Vu que tu bypass la pile IP du système tu dois t'assurer que les paquets que tu as crées sont corrects. Tu envois ensuite de cette façon ton paquet :  
 

Code :
  1. counter = sendto(sockfd, packet, size, 0,
  2.                    (struct sockaddr*) &sock, sizeof(struct sockaddr_ll));


 
Tout ça est expliqué dans les man socket et netdevice, avec les #include qui vont bien.

n°937148
cricri_
Posté le 04-01-2005 à 19:00:30  profilanswer
 

ça fonctionne aussi avec les winsock ça ?
Car il me semblait que l'accès est assez limité pour tout ce qui est bas niveau ...

n°937235
Exo 7
Posté le 04-01-2005 à 20:40:15  profilanswer
 

Il y a des rawsock depuis windows 2000, mais je n'ai jamais eu l'occasion de programmer avec. En même temps ça ne me manque pas trop :D

n°937274
yartempion
Posté le 04-01-2005 à 21:31:54  profilanswer
 

Mais ou trouvez vous toutes vos infos? Moi je n'arrete pas de m'acheter des docs (le dernier: programmation systeme en C sous linux de Christophe BLAESS) il y a tout une partie qui traite des sockets et de la communication reseaux mais tous ces details ne sont pas traites.
Pour les pages Man j'iabeaucoups de problemes a les interpreter puisque je n'ai pas une tres bonne pratique de l'anglais. Si tu connais des livres qui traitent de la programmation reseaux et comment maitriser le graphisme (mais en essayant de programmer directement X11) en c sous unix ou linux ou meme des liens mais de preference en fr ce serait sympa de me les communiquer.
Merci A+++

mood
Publicité
Posté le 04-01-2005 à 21:31:54  profilanswer
 

n°937287
Exo 7
Posté le 04-01-2005 à 21:51:12  profilanswer
 

J'ai utilisé les rawsock pour la première fois en maitrise.
 
L'anglais est obligatoire en info.
Tu peux quand même te débrouiller si tu es une quiche irrécupérable en anglais avec les pages man qui ont été traduites
par exemple, avec google j'ai de la chance :  
http://dpobel.free.fr/man/html/
 
pour le graphisme je ne sais me servir que d'OpenGL avec glut donc je ne peux pas t'aider.

n°937294
ffomnislas​h
Posté le 04-01-2005 à 21:56:54  profilanswer
 

pour le graphisme sous linux il y a GTK pour les interface de programme (boutton, menu deroulant ... ), c'est facile de trouver de la doc ;)
Et il y a SDL pour faire du graphisme que je qualifierait orienté image/dessin ;)

n°937393
yartempion
Posté le 04-01-2005 à 23:33:45  profilanswer
 

GTK je connais mais sous unix il n'y a pas.
SDL je sais pas je faits des  recherches ou si tu as des lien envoie les moi merci.

n°938349
ffomnislas​h
Posté le 05-01-2005 à 19:16:10  profilanswer
 

Quand tu parle de unix tu parle de linux ou des unix en genral?
 
Parce que GTK est sous linux, c'est d'ailleurs sur cette plateforme qu'il a été créé au depart.
Sinon pour unix en general je ne sais pas.
 
Pour SDL voir le site officiel: www.libsdl.org mais je previens de suite si ce que tu veut faire c'est de l'interface utilisateur laisse tomber et prend GTK

n°940759
yartempion
Posté le 07-01-2005 à 22:40:27  profilanswer
 

Oui quand je d'unix c'est sous une machine hp ou sun. Je ne cherche pas a faire de l'interface utilisateur mais plutot a faire des ronds des lignes ou des formes geometrique quelconques, si on peut faire du fenetrage utilisateur pourquoi pas mais dans un premier temps ce n'est pas mon objectif, pour cela je sais qu'il existe un truc qui s'appel MOTIF. Ce qui m'interesse c'est de savoir s'il existe des methodes pour faire du graphisme en C sous unix et comprendre comment fonctionne le protocole X11.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  prog reseseaux

 

Sujets relatifs
kill de prog et fermeture des fichiers[Prog] Dossier de programmation
[ALGO]prog en Algoprog delphi en service : problème certaines fonctions
Générer une macro depuis un prog C++Simulé une séquence de touches clavier vers un autre prog...
[prog simple] Petit prog pour changer auto la taille d'une imageComment envoyer yes en parametre a un prog?
[C++] Distribution de prog utilisant une bdd ODBCj'en peu plus c'est quoi l'erreur dans mon prog
Plus de sujets relatifs à : prog reseseaux


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)