2010-08-19 40 views

Trả lời

4

Windows có hai loại ống: ống ẩn danh và ống có tên. Các đường ống ẩn danh tương đối chặt chẽ với các đường ống Unix - việc sử dụng điển hình là cho một quy trình cha mẹ để thiết lập chúng được kế thừa bởi một tiến trình con, thường được kết nối với các luồng đầu vào, đầu ra và/hoặc lỗi tiêu chuẩn của trẻ. Tại một thời điểm, các đường ống ẩn danh đã được thực hiện hoàn toàn khác với các đường ống được đặt tên để chúng không hỗ trợ (cho một ví dụ) hỗ trợ I/O chồng lên nhau. Kể từ đó, đó là thay đổi để một đường ống vô danh về cơ bản chỉ là một đường ống có tên với một cái tên bạn không biết, vì vậy bạn không thể mở nó theo tên, nhưng nó vẫn có tất cả các tính năng khác của một đường ống được đặt tên (chẳng hạn như khả năng I/O chồng chéo nói trên).

Ống được đặt tên Windows giống như các ổ cắm. Chúng có nguồn gốc với OS/2, nơi ban đầu chúng là cơ chế chính để tạo các ứng dụng máy khách/máy chủ. Ban đầu chúng được xây dựng xung quanh NetBIOS (tức là, đã sử dụng NetBIOS cho cả địa chỉ và giao thông). Chúng được tích hợp chặt chẽ với những thứ như xác thực Windows, vì vậy bạn có thể (ví dụ) có một máy chủ đặt tên đường giả mạo máy khách để hạn chế máy chủ thực hiện những việc mà khách hàng có thể thực hiện nếu đăng nhập trực tiếp. Gần đây, MS đã gặp một số rắc rối để loại bỏ sự phụ thuộc vào NetBIOS, nhưng mặc dù bây giờ họ có thể sử dụng IP như phương tiện của họ (và DNS để giải quyết, IIRC) chúng vẫn được sử dụng chủ yếu cho các máy Windows. Việc sử dụng chính trên các máy khác là bắt chước Windows, chẳng hạn như bằng cách chạy Samba.

0

(Tắt đầu của tôi)

Ống: Một ống có tô nhỏ ở một đầu; được sử dụng để hút thuốc lá

Socket: Receptacle nơi một cái gì đó (một đường ống, đầu dò hoặc kết thúc của một xương) được chèn

Anyways:

"Một sự khác biệt lớn giữa ống và socket là ống yêu cầu một quy trình chung là để thiết lập kênh liên lạc . Kết nối giữa các ổ cắm có thể được thiết lập theo hai quy trình không liên quan, có thể cư trú trên các máy khác nhau. "

+0

LOL, nhưng nó không liên quan đến chương trình .. – wamp

+2

@VoodooChild: Xấu hổ :) –

+1

Đây là rắc rối khi đặt tên cho mọi thứ, thật khó. Trong thế giới Windows, một "đường ống có tên" giống như một ổ cắm và được sử dụng để kết nối các máy khách với các máy chủ trên các máy khác nhau. –

3

(trơ trẽn cribbed từ http://www.perlmonks.org/?node_id=180842)

Ống tác dụng rất nhanh và đáng tin cậy, bởi vì chúng được thực hiện trong bộ nhớ trên một máy chủ duy nhất, nơi cả hai quá trình giao tiếp chạy. Ổ cắm chậm hơn và kém tin cậy hơn, nhưng linh hoạt hơn nhiều vì chúng cho phép giao tiếp giữa các quá trình trên các máy chủ khác nhau.

+1

Ống cũng cho phép giao tiếp giữa các máy chủ khác nhau. Lưu ý rằng nó được gắn thẻ [Windows], vì vậy chúng ta đang nói về các ống Windows, chứ không phải các ống Unix ở đây. –

+0

Có thể sử dụng một đường ống nhiều lần không? Như trong bài viết này có vẻ như với tôi rằng một đường ống chỉ có thể được sử dụng một lần (sẽ bị đóng khi đã sử dụng): http://msdn.microsoft.com/en-us/library/aa365588%28v=VS.85%29. aspx – wamp

+0

@ Jerry - true - một khi điều này xảy ra (liên lạc giữa các máy) có sự khác biệt lớn giữa ống và ổ cắm, ít nhất là về mặt tốc độ? –

1

Ổ cắm sẽ sử dụng một số loại giao thức IP như TCP/IP hoặc UDP, do đó sẽ chậm hơn, nhưng mã của bạn sẽ di động hơn nếu bạn cần giao tiếp qua mạng. Có một cách tiếp cận chia sẻ mem thứ ba và các cổng Mach (trong trường hợp này tôi không chắc chắn về nó sẽ làm việc với Windows)

-4

Cả hai đều làm cùng chức năng, sự khác biệt duy nhất là các ống hiệu quả hơn vì chúng gần nhất người ta có thể nhận được các barebones của internets. Ổ cắm là một trừu tượng được xây dựng trên đầu trang của loạt các ống (ống) như là kết quả họ đang chậm hơn (cũng giống như java là chậm hơn so với mã lắp ráp bản địa).

Các vấn đề liên quan