Communication inter-logiciel

a marqué ce sujet comme résolu.

Bonjour,

J’aimerais pouvoir faire communiquer des logiciels entre eux. Pour être plus précis, j’aimerais faire ce qu’à dit bat’ ici. J’aimerais passer par des "in/out", mais comment ? Le but étant que ça reste plus simple à implémenter que des sockets ou autre.

Je vous remercie,

WinXaito.

+0 -0

Salut,

Tu n’as pas mis de tag, et tu ne précise pas le langage que tu utilises.
Les programmes communiquant que j’ai déjà fait n’était pas portables, ils utilisaient des mécanismes liés à linux, je ne sais pas si il y a des bibliothèques multiplatformes pour ça. Si ça t’intéresse, c’était en C, j’utilisais la shared memory, les sémaphores, les pipes et les signaux.
(cependant je ne pense pas que ça soit plus simple que les sockets).

Merci, je vais me renseigner.

Tu n’as pas mis de tag

Ne sachant comment nommer la chose, je ne savais pas quoi même. Pour le coup je peux mettre "Named pipe".

et tu ne précise pas le langage que tu utilises.

J’utilise Java, mais bon but est de faire communiquer différent programme dans différent langages. (Python, C++, etc.)

Désolé, c’était des remarques pas des reproches, c’était mal écrit.
Et je viens de penser qu’il existe des architectures distribués tels que CORBA que tu pourrais utiliser aussi. J’ai juste vu ça vite fait dans un cours alors je peux pas dire à quelles utilisations ça correspond le plus mais c’est intéressant.

+0 -1

Je viens de tombé sur une page, mais ils disent ceci:

Les langages supportés par Corba sont principalement: C,C++, Java, Ada, Cobol, Smalltalk et Lisp.

Et j’aimerais bien si-possible encore avoir accès à python, .NET, etc. (Après je ne sais pas de quand cet article date et si il y a eu des améliorations).

Si tu vises de l’interlangage et du multiplateforme, il n’existe pas 36 possibilités:

  • Les pipes anonymes (c’est ce qu’on fait avec stdin/stdout, et les opérateurs | & de la ligne de commande)
  • Les pipes nommées (named pipes) (oui ça existe aussi sous windows)
  • Les sockets: TCP, UDP

Après tu chercheras peut-être un système de plus haut niveau reposant sur un des trois ci-dessus (XMLRPC, web services, les systèmes de queue/messaging, etc.) Ca dépend de ce que tu veux faire.

Le reste c’est du spécifique à un langage ou un système:

  • RMI c’est seulement Java me semble-t-il
  • Sauf erreur il existe un truc dans le genre de RMI pour python, basé sur pickle et passant par TCP
  • Les sockets UNIX
  • Mémoire partagée (p.ex. memcached) (qui, à ma connaissance, n’existe pas sous windows)
  • IL existe plusieurs API windows only pour C/C++ et aussi C# comme WM_COPYDATA ou COM
+0 -0

Les sockets internet (TCP/UDP) ne sont pas différents des sockets UNIX. La seule chose qui change c’est un flag que l’on passe à la création du socket, et le format de l’adresse du point de connexion ; tout le reste est identique. Il suffit donc de coder à la base en utilisant des sockets internet, et de laisser la possibilité aux utilisateurs d’utiliser une connexion par socket unix à la place s’ils le souhaitent… ça va impacter à tout casser 10 lignes dans le programme.

Le seul paramètre qui a une vraie influence sur un code qui utilise des sockets, ce n’est pas la famille mais le type (STREAM ou DGRAM).

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte