Winsock là gì

Trong bài học này bọn họ vẫn cẩn thận sự việc trung trung khu của thiết kế mạng: socket. Trong những bài học trước họ đang chăm chú chi tiết những sự việc của vận dụng mạng. Tất cả các điều này giúp bọn họ đánh giá địa điểm của vận dụng mạng vào toàn hệ thống. Để tạo thành ứng dụng mạng bọn họ đề nghị áp dụng cho socket góp ứng dụng tương tác với các dịch vụ mạng của hệ thống.

Bạn đang xem: Winsock là gì


Lập trình với socket là gốc rễ mang đến bài toán cách tân và phát triển tất cả những loại ứng dụng có thực hiện các dịch vụ media mạng, có thể chấp nhận được chúng ta sử dụng các các dịch vụ media mạng mà lại khối hệ thống cung ứng. Trong phần này họ sẽ lưu ý cụ thể định nghĩa và địa điểm của socket.

Nlỗi đã học tập trong những bài trước, những ứng dụng mạng đông đảo bao gồm các cặp quá trình với quá trình truyền thông thân bọn chúng. Bất kỳ thông điệp như thế nào truyền rằng xuất phát từ 1 quy trình tới quá trình còn lại phải trải qua mạng. Dữ liệu từ các bước tới hình thức dịch vụ media yêu cầu đi sang 1 đối tượng trung gian Hotline là socket.

Góc chú ý truyền thông

Lúc nhìn nhận từ kỹ lưỡng truyền thông (đường đi của thông tin), socket hoàn toàn có thể được tưởng tượng như là một trong cửa nhà chia cách giữa công tác ứng dụng (nằm trong toàn quyền của fan lập trình) cùng ngăn xếp giao thức mạng (ở trong quyền thống trị của hệ điều hành).

Dữ liệu do lịch trình tạo nên đi xuyên qua góc cửa này nhằm mang đến quả đât mạng, chỗ nó sẽ tiến hành truyền tới địa điểm nên mang đến. Ở chiều ngược trở lại, dữ liệu tự mạng rất có thể đi xuyên thẳng qua góc cửa này nhằm tới được chương trình, chỗ nó sẽ tiến hành cách xử trí.


*
*
Đường đi của dữ liệu từ ứng dụng qua socket cho tới mạng

Một Khi tài liệu đã từng đi chiếu qua cánh cửa này, bạn lập trình sẽ không kiểm soát được nữa cơ mà hoàn toàn bởi các giao thức mạng nhào nặn để gia công sao rất có thể truyền đi qua mạng một giải pháp rất tốt. Người xây dựng chỉ có tác dụng chọn lọc mô hình dịch vụ tải tài liệu theo yêu cầu. Cụ thể rộng fan lập trình chỉ rất có thể chọn lựa hình thức TCP.. hoặc hình thức dịch vụ UDP.., bên cạnh đó cung ứng tđắm đuối số nhằm các dịch vụ này Ship hàng việc chuyên chở tài liệu theo tận hưởng của mình.

Góc nhìn mô hình mạng

Nhìn từ bỏ áp dụng, socket là hình ảnh giữa ứng dụng với hình thức tầng luân chuyển trên mỗi lắp thêm. Trong quy mô mạng TCP/IPhường, socket có thể xem nhỏng giao diện giữa tầng ứng dụng với tầng chuyển động.

Người trở nên tân tiến vận dụng bao gồm toàn quyền kiểm soát điều hành phía tầng áp dụng của socket tuy nhiên chẳng thể kiểm soát phía tầng luân chuyển của socket. Ở phía tầng vận chuyển, tín đồ phát triển ứng dụng chỉ rất có thể chắt lọc giao thức của tầng này và điều chỉnh một vài tđam mê số (size về tối đa của bộ nhớ đệm, size về tối đa của những segment dữ liệu).


*
*
Quan hệ các bước – socket – hình thức dịch vụ TCPhường trên thiết bị đầu cuối

Trong nhì cách nhìn nhấn bên trên, socket vào vai trò điểm đầu và điểm cuối của quy trình media mạng, tương tự như phân tách bóc giữa các bước (công tác ứng dụng) và hình thức dịch vụ tải của mạng.

So sánh một phương pháp hình tượng, từng quy trình có thể so sánh với cùng một căn nhà, còn socket chính là cửa của khu nhà ở kia, với môi trường thiên nhiên mạng truyền tài liệu giống như như một các dịch vụ đưa phạt nkhô cứng đặt ở ngay cửa ngõ của khu nhà ở.

Góc chú ý lập trình

Đối với người lập trình áp dụng, socket hoàn toàn có thể được tưởng tượng là một trong hình ảnh lập trình sẵn ứng dụng (API) để Hotline cho tới những chương trình bé của hệ điều hành quản lý.

Trong các bài xích trước chúng ta đã nhắc đến giao thức TCP hay giao thức UDP. Về bản chất, TCPhường. tốt UDPhường. phần đa là đều chương trình được tích hòa hợp sẵn trong số hệ quản lý hiện đại.

Tương trường đoản cú nhỏng những công tác khối hệ thống khác, TCPhường xuất xắc UDPhường (với cả IP) cũng cung cấp API nhằm bạn lập trình sẵn có thể sử dụng được những chương trình này.

khi học lập trình socket, họ đang đánh giá khái niệm socket hầu hết theo mắt nhìn này. Việc học tập lập trình sẵn socket lúc ấy thực tế là bài toán học thao tác với những API của hệ thống để gọi các hình thức dịch vụ truyền thông.

Socket API thứ nhất được thành lập vày ĐH Berkeley đến hệ điều hành quản lý BSD đề nghị thường xuyên được Hotline là BSD socket giỏi Berkeley socket. Sau đó Microsoft tham khảo và tạo ra những socket API dành cho hệ điều hành windows, điện thoại tư vấn là windows socket, tốt hay gọi tắt là winsock.

Winsoông chồng là bộ API tiêu chuẩn chỉnh nhằm lập trình sẵn mạng vào windows. Cũng vày lý do này mà lại những hàm socket API bên trên những hệ điều hành quản lý hiện giờ phần đông có tên Hotline gần giống nhau. Nắm bắt được biện pháp xây dựng cùng với socket API bên trên một nền tảng gốc rễ này hoàn toàn có thể thuận lợi tiếp cận cùng với những gốc rễ không giống.

Phân một số loại socket

Do có 2 mô hình dịch vụ cung cấp trao đổi tài liệu qua mạng nlỗi đang nói, socket cũng được chia làm 2 loại công ty yếu:

Socket để áp dụng dịch vụ TCPhường, Gọi là TCP. socket: Bởi vì TCPhường cung cấp các dịch vụ truyền dữ liệu theo một liên kết ảo giữa hai quy trình, TCP socket còn gọi là socket phía kết nối (connection-oriented socket). Do tài liệu truyền theo links TCP được tưởng tượng nhỏng một chuỗi byte tiếp tục, các loại socket này còn có một tên gọi khác là socket phía dòng (stream socket).Socket nhằm thực hiện hình thức UDP.., gọi là UDP. socket: Do UDP ko chế tác link cơ mà truyền tài liệu theo những gói (datagram) tự do, UDP socket được còn gọi là socket phi liên kết (connectionless socket) xuất xắc dgram socket.

Đối với người phát triển vận dụng hệ thống còn một các loại socket nữa, gọi là socket thô (raw socket). Loại socket này được cho phép hotline thẳng mang lại chương trình IPhường. cơ mà bỏ qua mất TCPhường hoặc UDP.

Xem thêm: Tìm Hiểu Về Tattoo Nghĩa Là Gì ? (Từ Điển Anh Tattoo Là Gì

Bình thường, tài liệu sau lúc đến công tác IP sẽ được chuyển tiếp lên công tác TCP.. hay UDP, tiếp đến bắt đầu được gửi tới áp dụng. Khi sử dụng socket thô, ta hoàn toàn có thể bỏ qua TCP/UDPhường nhưng mà trực mừng đón gói tin “thô” từ IP. Loại socket này góp họ cải cách và phát triển một trong những vận dụng quan trọng nlỗi ping, trace route.

Lập trình socket


Các hệ điều hành và quản lý thứ nhất của Microsoft (nlỗi MS-DOS và các phiên bạn dạng đầu của Microsoft Windows) có cung cấp năng lực kết nối mạng cơ mà hết sức tinh giảm, đa phần dựa vào NetBIOS. Trên thực tế, tại thời điểm này, Microsoft không cung cấp cung ứng mang lại ngăn xếp giao thức TCP / IPhường.

Một số nhóm với nhà cung cấp thương thơm mại (nlỗi team PC / IPhường tại MIT, FTP.. Software, Sun Microsystems, Ungermann-Bass cùng Excelan) sẽ trình làng những sản phẩm TCPhường / IP mang đến MS-DOS, sinh sống dạng một bộ phận của gói phần cứng / ứng dụng . lúc Windows 2.0 được xây cất, một số trong những đội khác (nhỏng Distinct cùng NetManage) cũng tmê mệt gia hỗ trợ TCP / IP. đến Windows.

Một vấn đề rất to lớn gặp đề xuất là từng đơn vị hỗ trợ lại áp dụng cỗ API của riêng biệt mình mà lại không có một mô hình xây dựng tiêu chuẩn thống nhất. Đến năm 1991, Martin Hall của JSB Software (trong tương lai thay tên thành Stardust Technologies) lời khuyên Windows Sockets API và đổi thay tiêu chuẩn cho lập trình sẵn vận dụng mạng trong Windows.

Winsock

Windows Sockets API (WSA), sau rút ít gọn gàng thành Winsoông chồng, là mộtsệt tả kỹ thuật xác minh cách phần mềm mạng trong Windows truy vấn các dịch vụmạng, nhất là TCP. / IP.. Winsock khái niệm hình ảnh chuẩn chỉnh thân áp dụng (vídụ chương trình FTP client hoặc trình cẩn thận web) cùng ngăn xếp giao thức TCPhường. / IPdưới. Winsock API được đặt trong tệp tin winsoông chồng.dll (16 bit) hoặc wsock32.dll(32 bit) trong tlỗi mục hệ thống.

Windows Sockets có mang nhị giao diện:

API cho các bên cải tiến và phát triển ứng dụng vận dụng, cùng SPI cho những công ty cải tiến và phát triển ứng dụng khối hệ thống (để thêm các giao thức bắt đầu vào hệ thống). API đảm bảo an toàn mang lại áp dụng rất có thể vận động với thiết lập của giao thức (protocol implementation) từ bất kỳ nhà hỗ trợ phần mềm mạng nào.SPI bảo vệ cho một setup của giao thức cân xứng rất có thể được sản xuất khối hệ thống Windows, với ví như một ứng dụng vâng lệnh API thì hoàn toàn có thể thực hiện được giao thức bắt đầu. Tuy nhiên, hiện nay SPI rất ít được áp dụng vị trong toàn bộ các phiên phiên bản Windows vừa mới đây, Microsoft đang hỗ trợ không thiếu thốn ngăn xếp giao thức TCPhường / IP.. với ko có khá nhiều người quyên tâm thi công những giao thức không giống cùng với TCP / IP.

Code cùng xây đắp của Windows Socket dựa trên tham khảo BSD Socket và hỗ trợ công dụng bổ sung cập nhật nhằm API tuân hành theo mô hình lập trình sẵn Windows. Windows Sockets API bao hàm gần như là tất cả các tài năng của BSD Socket API. Do đó, khi vắt được kỹ thuật lập trình với một bộ socket API rất có thể tiện lợi tiếp cận cùng với những cỗ socket API khác.

Hình như, những nguyên tắc cải cách và phát triển phần mềm áp dụng văn minh cũng tạo nên những “vỏ bọc” (wrapper) riêng rẽ bao phủ cỗ socket API để đơn giản dễ dàng hóa và nâng cấp kết quả trong phát triển các ứng dụng áp dụng mạng.

Hạn chế của xây dựng winsochồng

Nlỗi bên trên vừa trình bày, winsoông xã là bộ API tiêu chuẩn chỉnh để lậptrình mạng vào windows. Tuy nhiên, Việc lập trình sẵn vận dụng cùng với winsock có nhữngtrở ngại nhất thiết.

Thứ độc nhất vô nhị, các API khối hệ thống thường xuyên khôn cùng phức tạp cùng với không ít tmê mẩn số tạo trở ngại mang lại việc lập trình. Để đảm bảo an toàn tính linch hoạt, từng API đều cất không ít tđắm đuối số, áp dụng nhiều kiểu tài liệu cung ứng, cũng như có khá nhiều nhiều loại “magic constant”. Lập trình cùng với socket API cũng không nước ngoài lệ.

Thỏng hai, Việc gọi mang lại các API của hệ thống thường chỉ cân xứng khi lập trình cùng với một trong những ngôn từ cùng technology khăng khăng. lấy một ví dụ Khi áp dụng C/C++/Delphi tạo ra vận dụng native sầu mang đến windows đang thuận lợi truy cập các API này hơn. Tuy nhiên, áp dụng những ngữ điệu cùng công cụ bậc “không cao” như C/C++ làm cho tăng thời gian phát triển áp dụng (giảm năng suất).

Các công nghệ cách tân và phát triển áp dụng tân tiến thường xuyên tinh giảm Việc truy tìm xuất trực sau đó những API của khối hệ thống. Ttuyệt vào đó, các công nghệ này thường tạo nên những “vỏ bọc” (wrapper) để giúp bạn lập trình điện thoại tư vấn mang đến các API của khối hệ thống một phương pháp dễ dàng hơn.

lấy ví dụ, vào technology windows size của .Net framework, gắng vì để người dùng trực tiếp Hotline cho tới các API nhằm vẽ ra bối cảnh bối cảnh, .NET tạo thành các wrapper bao phủ những API này, .NET sau đó để giúp đỡ người dùng hotline các API tương xứng nhằm vẽ ra đồ họa hình ảnh.

Lập trình socket vào .NET framework

Đối với socket API, .NET framework cũng tạo nên các lớp wrapper để giúp bạn xây dựng Điện thoại tư vấn các hàm của TCP hay UDPhường nhưng ko cần tiếp xúc thẳng cùng với socket API. Qua kia giúp bạn xây dựng liên tục áp dụng mô hình lập trình khỏe khoắn, đơn giản dễ dàng, kết quả của .NET framework vào việc lập trình truyền thông media.

.NET framework cũng có phần nhiều cung ứng khác (ko riêng) mang lại lập trình sẵn mạng, gồm những: giao diện luồng dữ liệu (stream), trình trường đoản cú hóa dữ liệu (serialization), thay đổi dữ liệu (data conversion), lập trình bất đồng hóa (asynchronous programming), lập trình sẵn đa luồng (multi-threading programming), sản xuất bộ đệm (caching), bảo mật (socket security, crypto-stream).

Các cung cấp này đóng vai trò đặc biệt quan trọng đặc biệt quan trọng khi phát hành yếu tố VPS cùng cài đặt giao thức. Tất cả các vụ việc này đã theo lần lượt được trình bày chi tiết trong các bài học tương ứng của tư liệu.

Trong kích thước bài giảng này, họ đã chỉ nghiên cứu bí quyết thiết kế socket trên .NET framework với ngôn ngữ C#. Các hình thức cơ bạn dạng của xây dựng socket là tựa như nhau tuy nhiên thực hiện những biện pháp khác biệt. Nắm bắt được cách lập trình sẵn socket trên .NET có thể trọn vẹn thuận lợi tiếp cập thiết kế socket, ví dụ, trên Java, giỏi Pybé, Rubi, v.v..

Xem thêm: Thất Vọng Là Gì - 10 Câu Nói Hay Về Sự Thất Vọng Khiến Bạn Cô Đơn

Lưu ý rằng đây là một tài liệu chuyên về lập trình sẵn mạng cùng với .NET framework, chưa phải là một trong tư liệu về lập trình C#. Chúng ta sẽ không đề cập đến những vụ việc cơ bản của lập trình sẵn C# ở đây. Để có thể quan sát và theo dõi các ví dụ của bài giảng, các bạn phải nắm rõ ngôn từ lập trình C#, chuyên môn lập trình sẵn hướng đối tượng người tiêu dùng trong C#, biện pháp lập trình cùng với các thư viện của .NET framework, cũng tương tự một trong những chuyên môn lập trình sẵn .NET cải thiện.


Chuyên mục: Định Nghĩa