Winsock là gì

Trong bài học kinh nghiệm này họ đã lưu ý sự việc trung tâm của lập trình sẵn mạng: socket. Trong các bài học kinh nghiệm trước họ đã xem xét cụ thể những vấn đề của vận dụng mạng. Tất cả các vấn đề này giúp họ đánh giá địa chỉ của ứng dụng mạng trong toàn hệ thống. Để tạo thành ứng dụng mạng bọn họ yêu cầu sử dụng cho socket giúp vận dụng địa chỉ với hình thức dịch vụ mạng của hệ thống.

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


Lập trình cùng với socket là nền tảng đến câu hỏi cải cách và phát triển toàn bộ những một số loại phần mềm bao gồm áp dụng hình thức media mạng, chất nhận được họ sử dụng những dịch vụ media mạng nhưng mà hệ thống cung cấp. Trong phần này bọn họ đã cẩn thận chi tiết khái niệm cùng vị trí của socket.

Nlỗi đang học tập trong số bài bác trước, các ứng dụng mạng mọi bao gồm các cặp các bước với quy trình truyền thông media giữa chúng. Bất kỳ thông điệp nào truyền rằng từ 1 các bước cho tới các bước còn lại bắt buộc đi qua mạng. Dữ liệu từ bỏ quy trình cho tới hình thức dịch vụ truyền thông phải đi sang 1 đối tượng người sử dụng trung gian hotline là socket.

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

Khi nhìn nhận và đánh giá từ khía cạnh media (lối đi của thông tin), socket hoàn toàn có thể được tưởng tượng nlỗi là 1 trong những cánh cửa phân làn thân công tác ứng dụng (thuộc toàn quyền của người lập trình) và ngnạp năng lượng xếp giao thức mạng (trực thuộc quyền cai quản của hệ điều hành).

Dữ liệu vì chương trình tạo ra đi xuyên qua cánh cửa này nhằm mang lại trái đất mạng, địa điểm nó sẽ tiến hành truyền cho tới địa điểm đề nghị cho. Ở chiều ngược chở lại, tài liệu trường đoản cú mạng hoàn toàn có thể đi xuyên qua cánh cửa này để cho tới được lịch trình, nơi nó sẽ được xử lý.


*
*
Đường đi của dữ liệu từ bỏ áp dụng qua socket tới mạng

Một Lúc tài liệu đã từng đi chiếu thẳng qua cửa nhà này, fan thiết kế sẽ không còn điều hành và kiểm soát được nữa cơ mà trọn vẹn vày những giao thức mạng nhào nặn để gia công sao hoàn toàn có thể truyền trải qua mạng một biện pháp tốt nhất. Người xây dựng chỉ có tác dụng lựa chọn mô hình dịch vụ đi lại dữ liệu theo nhu cầu. Cụ thể hơn bạn lập trình chỉ hoàn toàn có thể gạn lọc hình thức dịch vụ TCP hoặc dịch vụ UDP, đôi khi cung ứng tmê man số nhằm các dịch vụ này Giao hàng câu hỏi tải dữ liệu theo thử khám phá của chính mình.

Góc quan sát quy mô mạng

Nhìn tự ứng dụng, socket là giao diện thân ứng dụng với các dịch vụ tầng giao vận trên mỗi vật dụng. Trong mô hình mạng TCP/IP, socket rất có thể coi nlỗi hình ảnh giữa tầng ứng dụng và tầng vận tải.

Người cải tiến và phát triển ứng dụng gồm toàn quyền kiểm soát và điều hành phía tầng áp dụng của socket tuy nhiên tất yêu điều hành và kiểm soát phía tầng giao vận của socket. Tại phía tầng giao vận, tín đồ cải tiến và phát triển áp dụng chỉ hoàn toàn có thể sàng lọc giao thức của tầng này cùng kiểm soát và điều chỉnh một vài ba tsi số (kích thước tối nhiều của bộ lưu trữ đệm, size tối nhiều của các segment dữ liệu).


*
*
Quan hệ tiến trình – socket – hình thức TCP trên lắp thêm đầu cuối

Trong hai ý kiến nhận bên trên, socket nhập vai trò điểm đầu cùng điểm cuối của quá trình media mạng, cũng tương tự phân tách giữa quá trình (lịch trình ứng dụng) với các dịch vụ chuyên chở của mạng.

So sánh một biện pháp biểu tượng, từng quá trình có thể so sánh với cùng một nơi ở, còn socket chính là cửa ngõ của khu nhà ở đó, cùng môi trường xung quanh mạng truyền dữ liệu tương tự như nhỏng một dịch vụ gửi phạt nhanh khô đặt ở tức thì cửa của khu nhà ở.

Góc quan sát lập trình

Đối với những người xây dựng vận dụng, socket rất có thể được tưởng tượng là một trong giao diện xây dựng ứng dụng (API) để Call tới các chương trình con của hệ quản lý.

Trong các bài xích trước bọn họ đang nhắc tới giao thức TCP tốt giao thức UDPhường. Về thực chất, TCPhường giỏi UDPhường rất nhiều là phần đông công tác được tích hòa hợp sẵn trong các hệ quản lý tân tiến.

Tương tự nlỗi các lịch trình hệ thống khác, TCP tốt UDPhường (cùng cả IP) cũng cung cấp API để người lập trình sẵn rất có thể sử dụng được các công tác này.

Lúc học xây dựng socket, chúng ta sẽ nhìn nhận khái niệm socket chủ yếu theo mắt nhìn này. Việc học tập xây dựng socket khi đó thực chất là Việc học thao tác làm việc với các API của hệ thống nhằm Call những hình thức truyền thông.

Socket API đầu tiên được tạo bởi ĐH Berkeley mang đến hệ điều hành quản lý BSD cần thường xuyên được call là BSD socket tuyệt Berkeley socket. Sau đó Microsoft tìm hiểu thêm và tạo nên các socket API giành riêng cho hệ điều hành và quản lý windows, call là windows socket, giỏi thường xuyên Call tắt là winsock.

Winsoông xã là cỗ API tiêu chuẩn nhằm thiết kế mạng trong windows. Cũng do nguyên do này mà lại các hàm socket API trên những hệ điều hành hiện giờ gần như mang tên call tương tự nhau. Nắm bắt được giải pháp lập trình sẵn cùng với socket API trên một gốc rễ này có thể dễ dàng tiếp cận với những căn nguyên không giống.

Phân nhiều loại socket

Do bao gồm 2 mô hình dịch vụ cung ứng thương lượng tài liệu qua mạng nlỗi đã nói, socket cũng rất được chia thành 2 một số loại chủ yếu:

Socket để sử dụng các dịch vụ TCP, gọi là TCPhường socket: Bởi vị TCPhường cung ứng các dịch vụ truyền tài liệu theo một link ảo giữa nhì tiến trình, TCPhường socket còn được gọi là socket hướng kết nối (connection-oriented socket). Do tài liệu truyền theo liên kết TCPhường được hình dung nhỏng một chuỗi byte tiếp tục, một số loại socket này còn tồn tại một tên gọi không giống là socket hướng dòng (stream socket).Socket nhằm thực hiện hình thức dịch vụ UDPhường, call là UDPhường socket: Do UDP ko tạo thành link mà truyền dữ liệu theo các gói (datagram) hòa bình, UDPhường socket được nói một cách khác là socket phi liên kết (connectionless socket) tuyệt dgram socket.

Đối với những người cải tiến và phát triển ứng dụng hệ thống còn một nhiều loại socket nữa, điện thoại tư vấn là socket thô (raw socket). Loại socket này cho phép call thẳng đến công tác IPhường. nhưng bỏ qua mất TCPhường hoặc UDPhường.

Xem thêm: Hệ Số Kpi Là Gì - Key Performance Indicator

Bình hay, tài liệu sau lúc tới lịch trình IPhường sẽ tiến hành chuyến qua lên công tác TCP xuất xắc UDP, tiếp đến mới được đưa cho tới áp dụng. khi sử dụng socket thô, ta hoàn toàn có thể làm lơ TCP/UDPhường cơ mà trực chào đón gói tin “thô” trường đoản cú IP.. Loại socket này góp bọn họ trở nên tân tiến một số trong những ứng dụng quan trọng như ping, trace route.

Lập trình socket


Các hệ quản lý và điều hành đầu tiên của Microsoft (như MS-DOS với các phiên bạn dạng đầu của Microsoft Windows) tất cả hỗ trợ tài năng liên kết mạng dẫu vậy siêu hạn chế, đa số dựa trên NetBIOS. Trên thực tiễn, tại thời đặc điểm đó, Microsoft không cung cấp cung ứng mang lại ngnạp năng lượng xếp giao thức TCP / IP.

Một số team và nhà cung cấp thương thơm mại (nhỏng đội PC / IP. trên MIT, FTP Software, Sun Microsystems, Ungermann-Bass và Excelan) sẽ ra mắt các thành phầm TCPhường / IPhường mang lại MS-DOS, sinh sống dạng một thành phần của gói Hartware / ứng dụng . Khi Windows 2.0 được thiết kế, một số team không giống (nhỏng Distinct cùng NetManage) cũng tham gia hỗ trợ TCP / IPhường cho Windows.

Một vụ việc rất lớn gặp gỡ đề xuất là từng bên cung ứng lại áp dụng cỗ API của riêng rẽ bản thân nhưng không có một quy mô lập trình sẵn tiêu chuẩn chỉnh thống tốt nhất. Đến năm 1991, Martin Hall của JSB Software (về sau đổi tên thành Stardust Technologies) khuyến cáo Windows Sockets API cùng trở thành tiêu chuẩn mang đến xây dựng vận dụng mạng vào Windows.

Winsock

Windows Sockets API (WSA), sau rút gọn gàng thành Winsoông chồng, là mộtsệt tả nghệ thuật khẳng định giải pháp ứng dụng mạng vào Windows truy cập những dịch vụmạng, đặc biệt là TCPhường. / IP.. Winsochồng khái niệm đồ họa chuẩn chỉnh giữa ứng dụng (vídụ công tác FTP client hoặc trình chăm sóc web) và ngăn uống xếp giao thức TCP / IPdưới. Winsochồng API được đặt vào file winsock.dll (16 bit) hoặc wsock32.dll(32 bit) trong tlỗi mục hệ thống.

Windows Sockets tư tưởng nhì giao diện:

API cho những bên cải cách và phát triển phần mềm ứng dụng, và SPI cho các bên cải cách và phát triển phần mềm khối hệ thống (nhằm thêm các giao thức new vào hệ thống). API bảo đảm mang đến áp dụng có thể chuyển động với thiết đặt của giao thức (protocol implementation) từ bỏ bất kỳ đơn vị cung cấp phần mềm mạng như thế nào.SPI đảm bảo an toàn cho một thiết đặt của giao thức tương xứng hoàn toàn có thể được cung ứng khối hệ thống Windows, với ví như một vận dụng vâng lệnh API thì hoàn toàn có thể sử dụng được giao thức mới. Tuy nhiên, hiện thời SPI hiếm hoi được thực hiện vày trong toàn bộ những phiên bạn dạng Windows cách đây không lâu, Microsoft đã hỗ trợ đầy đủ ngăn xếp giao thức TCPhường. / IPhường cùng không có rất nhiều fan quan tâm thiết kế những giao thức khác với TCP / IP.

Code cùng xây cất của Windows Socket dựa vào tìm hiểu thêm BSD Socket và cung ứng công dụng bổ sung nhằm API tuân hành theo quy mô thiết kế Windows. Windows Sockets API bao hàm gần như tất cả các nhân kiệt của BSD Socket API. Do đó, Khi nạm được nghệ thuật thiết kế với một cỗ socket API có thể dễ dàng tiếp cận với những cỗ socket API khác.

Bên cạnh đó, các phép tắc cải cách và phát triển ứng dụng áp dụng tân tiến cũng tạo nên những “vỏ bọc” (wrapper) riêng bao quanh cỗ socket API để đơn giản và dễ dàng hóa với nâng cấp công dụng vào cải tiến và phát triển những ứng dụng vận 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 nhằm lậptrình mạng trong windows. Tuy nhiên, câu hỏi lập trình sẵn vận dụng cùng với winsoông chồng bao gồm nhữngtrở ngại nhất định.

Thứ tốt nhất, các API khối hệ thống thường xuyên rất phức hợp với không ít tđắm đuối số gây trở ngại mang lại việc lập trình sẵn. Để bảo đảm tính linch hoạt, từng API hầu như chứa không hề ít tmê say số, áp dụng nhiều kiểu dữ liệu hỗ trợ, cũng giố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ệ.

Tlỗi nhị, Việc điện thoại tư vấn đến các API của hệ thống thường chỉ cân xứng lúc lập trình với một trong những ngữ điệu với công nghệ khăng khăng. ví dụ như Lúc thực hiện C/C++/Delphi thiết kế ứng dụng native cho windows đang tiện lợi truy vấn những API này rộng. Tuy nhiên, thực hiện các ngữ điệu với qui định bậc “ko cao” nhỏng C/C++ làm tăng thời hạn cách tân và phát triển ứng dụng (bớt năng suất).

Các technology phát triển vận dụng hiện đại thường xuyên hạn chế bài toán truy tìm xuất trực kế tiếp những API của khối hệ thống. Ttốt vào đó, những technology này thường xuyên tạo ra các “vỏ bọc” (wrapper) để giúp đỡ người lập trình gọi mang đến những API của hệ thống một bí quyết dễ dãi rộng.

Ví dụ, trong công nghệ windows khung của .Net framework, thế bởi vì nhằm người dùng trực tiếp Điện thoại tư vấn cho tới những API để vẽ ra hình ảnh giao diện, .NET tạo nên những wrapper xung quanh các API này, .NET tiếp nối để giúp đỡ người dùng Điện thoại tư vấn các API khớp ứng để vẽ ra bối cảnh giao diện.

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

Đối cùng với socket API, .NET framework cũng tạo ra các lớp wrapper để giúp người lập trình sẵn gọi các hàm của TCP. tốt UDPhường. cơ mà không yêu cầu tiếp xúc thẳng với socket API. Qua kia góp tín đồ lập trình liên tục sử dụng mô hình lập trình sẵn dạn dĩ, đơn giản dễ dàng, công dụng của .NET framework trong câu hỏi lập trình sẵn truyền thông.

.NET framework cũng đều có gần như cung cấp khác (không riêng) cho xây dựng mạng, bao gồm: hình ảnh luồng tài liệu (stream), trình tự hóa dữ liệu (serialization), thay đổi dữ liệu (data conversion), lập trình bất đồng bộ (asynchronous programming), lập trình đa luồng (multi-threading programming), tạo thành cỗ đệm (caching), bảo mật (socket security, crypto-stream).

Các hỗ trợ này đóng vai trò quan trọng quan trọng đặc biệt Lúc sản xuất yếu tắc hệ thống với thiết đặt giao thức. Tất cả những vụ việc này sẽ thứu tự được trình diễn cụ thể trong số bài học khớp ứng của tư liệu.

Trong khuôn khổ bài giảng này, chúng ta vẫn chỉ phân tích cách lập trình socket trên .NET framework với ngôn ngữ C#. Các chính sách cơ phiên bản của lập trình socket là tương tự như nhau tuy nhiên sử dụng những nguyên tắc không giống nhau. Nắm bắt được cách thiết kế socket bên trên .NET hoàn toàn có thể hoàn toàn dễ ợt tiếp cập lập trình sẵn socket, ví dụ, trên Java, hay Pykhông lớn, Rubi, v.v..

Xem thêm: Thế Nào Là Hành Vi Tổ Chức Đánh Bạc, Tội Tổ Chức Đánh Bạc Hoặc Gá Bạc Năm 2021

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


Chuyên mục: Hỏi Đáp