11
votes

Quelle est la différence entre le tuyau et la prise?

Les deux peuvent être utilisés pour communiquer entre différents processus,

Quelle est la différence?


1 commentaires

Le sujet sonne comme le début d'une mauvaise blague


5 Réponses :


2
votes

(sur le dessus de ma tête)

tuyau: tube avec un petit bol à une extrémité; Utilisé pour fumer du tabac

Prise: récipient où quelque chose (un tuyau, une sonde ou une extrémité d'un os) est inséré

Quoi qu'il en soit:

"une différence majeure entre les tuyaux et les sockets est que les tuyaux nécessitent un commun Processus parent pour configurer le Channel de communication. Une connexion entre les sockets peut être mis en place par deux processus non liés, éventuellement résidant sur différentes machines. "


6 commentaires

C'est la peine de nommer des choses, c'est dur. Dans le monde Windows, un "tuyau nommé" ressemble plus à une prise et est utilisé pour connecter des clients aux serveurs de différentes machines.


@Greg Hewgill: bon point, mais "Les tuyaux et les sockets nommés ne sont pas équivalents fonctionnellement; les prises offrent plus de fonctionnalités (elles sont bidirectionnelles, pour un démarrage)." Selon Stackoverflow.com/Questtions/1235958/ ...


@Voodoochild, est-ce vrai? J'ai toujours entendu des pipes peuvent également être utilisées pour des communications entre deux processus non liés.


@Voodoochild: pendant que vous peut créer un tuyau nommé en tant qu'inbound-inbound-seulement ou sortant uniquement, vous pouvez également le créer comme duplex, si c'est ce que vous voulez. msdn.microsoft.com/en-us/library/aa365150 (Vs.85) .aspx


@Jerry Coffin: Vous êtes correct dans le contexte de nommer des pipes dans Windows. Maintenant, la même chose n'est pas vraie si nous ne parlons pas de Windows!


@wamp: Découvrez la réponse par "Roger Austin" dans le lien suivant " Stackoverflow.com/questions/1746075/... " .... Bien que la question soit pour la CIP locale sur Windows, elle pourrait répondre à certaines de vos questions.



5
votes

(cercles sans vergogne de http://www.perlmonks.org/?node_id=180842)

Les tuyaux sont rapides et fiables, car ils sont implémentés en mémoire sur un seul hôte où les deux processus de communication fonctionnent. Les sockets sont plus lents et moins fiables, mais sont beaucoup plus flexibles car ils permettent la communication entre les processus de différents hôtes.


4 commentaires

Les tuyaux permettent également la communication entre différents hôtes. Notez qu'il est marqué [Windows], nous parlons donc de tuyaux Windows, pas de tuyaux non centraux ici.


Peut-on utiliser plusieurs fois plusieurs fois? Comme dans cet article, il me semble qu'un tuyau ne peut être utilisé qu'une seule fois (sera fermé une fois utilisé): msdn.microsoft.com/en-us/library/aa365588%28v=vs.85%29.aspx


@ Jerry - True - Une fois que cela se produit (communication inter-machine) existe une grande différence entre un tuyau et une prise, du moins en termes de vitesse?


Je n'ai pas fait un test assez récemment pour vraiment savoir. J'ai testé une fois (~ 1995) et les tuyaux sont sortis plus rapidement, mais cela ne signifie pas grand chose sur les versions plus récentes de Windows.



1
votes

Les sockets utiliseraient une sorte de protocole IP comme TCP / IP ou UDP, il serait donc plus lent, mais votre code serait plus portable si vous devez communiquer sur un réseau. Il existe une troisième approche MEM partagée et des ports de Mach (dans ce cas, je ne suis pas sûr de fonctionner avec Windows)


0 commentaires

-4
votes

Ils font tous les deux la même fonction, la seule différence est que les tuyaux sont plus efficaces qu'ils sont les plus proches, on peut accéder aux barebones d'internets. Les sockets sont une abstraction construite sur une série de tubes (tuyaux) en conséquence, ils sont plus lents (tout comme Java sont plus lents que le code d'assemblage natif).


0 commentaires

5
votes

Windows a deux types de tuyaux: tuyaux anonymes et tuyaux nommés. Les tuyaux anonymes correspondent (équitablement) étroitement aux tuyaux UNIX - L'utilisation typique est pour un processus parent de les installer pour être héritée d'un processus enfant, souvent connecté aux flux d'entrée, de sortie et / ou d'erreur standard de l'enfant. À une fois, des tuyaux anonymes ont été mis en œuvre complètement différemment des tuyaux nommés, de sorte qu'ils ne le font pas (pour un exemple), le support a chevauché E / S. Depuis lors, cela a changé de sorte qu'un tuyau anonyme est essentiellement juste un tuyau nommé avec un nom que vous ne connaissez pas, vous ne pouvez donc pas l'ouvrir par nom, mais il a toujours toutes les autres caractéristiques d'un tuyau nommé (tel que le Capacité d'E / S chevauchée susmentionnée).

Les pipes nommées Windows sont beaucoup plus comme des prises. Ils sont originaires du système d'exploitation / 2, où ils étaient à l'origine le principal mécanisme de création d'applications client / serveur. Ils ont été construits à l'origine autour de Netbios (c'est-à-dire utilisé NetBIOS à la fois pour adresser et transporter). Ils sont étroitement intégrés à des choses comme l'authentification de Windows, vous pouvez donc (par exemple) un serveur de tuyau nommé impernate le client pour limiter le serveur à faire des choses que le client pourrait faire si connecté directement. Plus récemment, la SP a eu des problèmes pour se débarrasser de la dépendance à des Netbios, mais même s'ils peuvent désormais utiliser la propriété intellectuelle comme transport (et DNS pour l'adressage, IIRC), ils sont toujours utilisés principalement pour les machines Windows. L'utilisation principale sur d'autres machines consiste à imiter Windows, comme en exécutant Samba.


0 commentaires