2009-03-26 24 views
40

Tôi không thấy sử dụng nhiều TCPClient, nhưng có rất nhiều Socket? Sự khác biệt lớn giữa chúng là gì và khi nào bạn sẽ sử dụng chúng?TCPClient và Socket trong C#

Tôi hiểu rằng .NET Socket được viết ở trên cùng của WINSOCK và TCPClient là trình bao bọc trên lớp Socket. Vì vậy, TCPClient là cách thức lên chuỗi, và có thể không hiệu quả. Đúng nếu tôi đã sai lầm.

Trả lời

31

Việc sử dụng TcpClient và TcpListener chỉ có nghĩa là một vài dòng mã nhỏ hơn. Như bạn nói nó chỉ là một wrapper trên lớp Socket vì vậy không có sự khác biệt hiệu suất giữa chúng nó hoàn toàn là một sự lựa chọn phong cách.

+2

'kiểu' là một từ lớn cho 'cảm giác thông thường' ở đây. Nếu bạn có thể sử dụng một prefab, bằng mọi cách, làm như vậy :) – xtofl

+6

Lưu ý ở đây dường như mâu thuẫn với điều này. http://msdn.microsoft.com/en-us/library/system.net.sockets.socket%28v=vs.110%29.aspx "Nếu bạn đang viết một ứng dụng tương đối đơn giản và _do không yêu cầu hiệu suất tối đa_, hãy cân nhắc sử dụng TcpClient " – Jon

+2

Không có mâu thuẫn. Giả định chung về mức trừu tượng cao hơn là nó ít linh hoạt hơn đối với các chức năng cơ bản. Do đó, nếu bạn cần phải làm một cái gì đó mà không phù hợp với mô hình của nói, 'TcpClient', bạn có thể kết thúc xoắn và uốn API của nó và mất khả năng đọc và hiệu suất trong quá trình này. Nếu bạn đang sử dụng nó cho những gì nó được thiết kế để làm tuy nhiên không có lý do cố hữu để tin rằng nó sẽ thực hiện ít hơn một API rõ ràng hơn, nhưng bạn sẽ đạt được trong khả năng đọc. – tne

9

Ngoài ra, bạn có thể truy cập trực tiếp socket từ đối tượng TCPClient, thuộc tính Client - do đó không có sự khác biệt về hiệu suất.

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