/ / Jaka jest różnica między rurą a gniazdem? - c ++, okna

Jaka jest różnica między rurą a gniazdem? - c ++, okna

Oba mogą być używane do komunikacji między różnymi procesami,

co za różnica?

Odpowiedzi:

4 dla odpowiedzi № 1

Windows ma dwa rodzaje rur: anonimowe rury i nazwane potoki. Rury anonimowe ściśle odpowiadają (ściśle) rurom uniksowym - typowym zastosowaniem dla procesu nadrzędnego jest ustawienie ich do dziedziczenia przez proces potomny, często połączony ze standardowymi strumieniami wejściowymi, wyjściowymi i / lub błędami dziecka. W pewnym momencie anonimowe potoki zostały zaimplementowane zupełnie inaczej niż nazwane potoki, więc nie były one (na przykład) wsparciem nakładającym się na I / O. Od tego czasu to się zmieniło, więc anonimowa rura jest po prostu nazwaną rurą o nazwie Nie wiem, więc nie można go otworzyć po nazwie, ale nadal ma wszystkie inne cechy nazwanego potoku (takie jak wyżej wspomniana zdolność nakładania I / O).

Rury o nazwach Windows są bardziej podobne do gniazd. Powstały z OS / 2, gdzie pierwotnie były podstawowym mechanizmem tworzenia aplikacji klient / serwer. Zostały one pierwotnie zbudowane wokół NetBIOS (tj. Używane NetBIOS zarówno do adresowania, jak i transportu). Są ściśle zintegrowane z takimi funkcjami, jak uwierzytelnianie systemu Windows, dzięki czemu można (na przykład) nazwać serwer potokowy podszywa się pod klienta, aby ograniczyć działanie serwera do czynności, które mógłby wykonać klient, jeśli jest on zalogowany bezpośrednio. zadali sobie trud, aby pozbyć się zależności od NetBIOS, ale nawet jeśli teraz mogą używać IP jako swojego transportu (i DNS do adresowania, IIRC), nadal są one używane głównie na komputerach z Windows. Podstawowym zastosowaniem na innych komputerach jest naśladowanie systemu Windows, na przykład przez uruchomienie Samby.


3 dla odpowiedzi № 2

(Bezwstydnie żłobiony z http://www.perlmonks.org/?node_id=180842)

Rury są szybkie i niezawodne, ponieważ sązaimplementowane w pamięci na pojedynczym hoście, na którym działają oba procesy komunikacyjne. Gniazda są wolniejsze i mniej niezawodne, ale są znacznie bardziej elastyczne, ponieważ umożliwiają komunikację między procesami na różnych hostach.


1 dla odpowiedzi nr 3

Gniazda używają jakiegoś rodzaju protokołu IPProtokół TCP / IP lub UDP będzie wolniejszy, ale Twój kod będzie bardziej przenośny, jeśli będziesz potrzebować komunikować się przez sieć. Istnieje trzecie podejście Shared mem i cztery porty Mach (w tym przypadku nie jestem pewien, czy będzie działać z Windows)


0 dla odpowiedzi nr 4

(Z wierzchu mojej głowy)

Rury: Rura z małą miską na jednym końcu; stosowany do palenia tytoniu

Gniazdo: Gniazdo, w którym znajduje się coś (rura, sonda lub koniec kości)

W każdym razie:

"Główna różnica między rurami i Gniazda toże rury wymagają wspólnego proces macierzysty, aby skonfigurować kanał komunikacyjny. Połączenie między gniazdami można ustawić przez dwa niepowiązane procesy, ewentualnie rezydujące na różnych maszynach. "


-4 dla odpowiedzi № 5

Obaj wykonują tę samą funkcję, tylko oniRóżnica polega na tym, że rury są bardziej wydajne, ponieważ są najbliżej położone w internecie. Gniazda są abstrakcją zbudowaną na szczycie serii rur (rur), w wyniku czego są wolniejsze (tak jak java jest wolniejsza niż natywny kod instalacyjny).