bonjour,
j'ai actuellement mis en place un socket de type UNIX domain pour une communication inter-processus et j'aimerai ajouter un second second de type AF_INET sur UDP mais je n'arrive pas à implémenter les deux ensembles.
une idée ?
bonjour,
j'ai actuellement mis en place un socket de type UNIX domain pour une communication inter-processus et j'aimerai ajouter un second second de type AF_INET sur UDP mais je n'arrive pas à implémenter les deux ensembles.
une idée ?
Qu'appelles-tu « le même fichier » ?
Si tu parles du fichier de type socket créé justement par bind dans le premier cas, alors il est normal que tu ne puisses pas le faire en UDP puisque le fait de créer une entrée dans le catalogue du système de fichiers comme point de connexion est une propriété du domaine AF_UNIX.
Plus précisément, les sockets sont une interface unifiée pour faire de la communication inter-processus proposée par BSD. Et c'est cette interface, disponible et relativement adaptée, que l'on a utilisé pour gérer les réseaux quand ils se sont démocratisés.
Donc, tu crées un socket comme si tu créais un tube et si tu dois te mettre à l'écoute d'une connexion entrante, alors tu lies (« bind ») ce socket à une adresse. Et cette adresse dépend justement du domaine dans lequel tu travailles :
— Unix (avec AF_UNIX) : tu es en local sur ta machine (ou ton mainframe) et tu t'en sers pour communiquer avec les processus à côté. Le domaine d'adressage est celui du système de fichier ;
— Internet (avec AF_INET) : le domaine d'adressage est celui… des adresses Internet ! Tu vas donc lier ton socket à une adresse IP, munie d'un numéro de port puisque tu travailles en UDP (même chose pour TCP).
Salut.
Désolé je me suis peut-être mal exprimé. Quand je disais fichier, je parlais du même fichier .C !
J'ai un socket AF_UNIX mais également un AF_INET. Ces deux sockets sont en mode lecture et écriture (recvfrom et sendto) mais j'aimerai que tout ceci soit totalement asynchrone.J'ai essayé de faire quelque chose avec un select mais je n'y arrive pas.
Tu parles peut-être d'un « descripteur de fichier » (fd), alors. Là encore, 1 descripteur = 1 fichier, tube, ou socket.
C'est pourtant bien comme cela qu'il faut procéder. Montre-nous ici ton code (encadré par les balises [code] et [/code]), et on tâchera de t'aider.J'ai un socket AF_UNIX mais également un AF_INET. Ces deux sockets sont en mode lecture et écriture (recvfrom et sendto) mais j'aimerai que tout ceci soit totalement asynchrone.J'ai essayé de faire quelque chose avec un select mais je n'y arrive pas.
Partager