Sobes.tech
Junior

Ի՞նչ է socket-ը։

sobes.tech AI

Պատասխան AI-ից

Սոկետ (socket) — ծրագրային ինտերֆեյս (API) ցանցային փոխազդեցության համար միջեւ գործընթացների։ Այն ապահովում է ամպլիտուդային abstraction ցանցային պրոտոկոլների, ինչպես TCP և UDP, հետ աշխատելու համար, թույլ տալով ծրագրերին ուղարկել և ստանալ տվյալներ ցանցի միջոցով։

Նա ներկայացնում է տեղեկատվության փոխանակման վերջնակետը։ Օրինակ, վեբ սերվերը կարող է ընդունել հարցումներ բրաուզերներից, իսկ հաճախորդային ծրագիրը կարող է տվյալներ ուղարկել սերվերին։

Սոկետները հիմնականում երկու տեսակի են՝

  • Աղյուսակային (Stream sockets, SOCK_STREAM): Օգտագործում է TCP պրոտոկոլը, ապահովում է հուսալի, հերթականացված տվյալների մատակարարում։ Համապատասխանում է այն ծրագրերին, որոնք պահանջում են մատակարարումի երաշխիք, օրինակ՝ HTTP կամ FTP։
  • Դագրամային (SOCK_DGRAM): Օգտագործում է UDP պրոտոկոլը, չի երաշխավորում տվյալների մատակարարումը կամ հերթականությունը։ Օգտագործվում է այնտեղ, որտեղ արագությունը կարևոր է, օրինակ՝ առցանց խաղերում կամ հոսքային տեսանյութերում։

Հիմնական փուլերը socket-ների հետ աշխատելու համար ցանցային ծրագրում (TCP օրինակով).:

  1. Սոկետի ստեղծում: socket() կանչով ստանում է socket-ի նկարագրիչը։
  2. Bind: Սոկետը կապում է որոշակի IP հասցե և պորտ տեղական մեքենայի վրա (սերվերային socket-ի համար):
  3. Լսում (Listen): Սահմանում է սերվերային socket-ը՝ սպասելու եկող կապերին։
  4. Ընդունում (Accept): Եկող կապը ընդունում է և ստեղծում նոր socket այդ կապի համար։
  5. Կապ հաստատում (Connect): Միջնորդը կապվում է սերվերին IP և պորտով (միջնորդային socket-ի համար):
  6. Ուղարկում/Ստանում (Send/Receive): Տվյալների փոխանակում՝ հաստատված կապի միջոցով։
  7. Փակել (Close): Socket-ը փակվում է աշխատանքը ավարտելուց հետո։

Python-ում TCP socket ստեղծելու օրինակ:

import socket

# TCP/IP socket ստեղծում
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Ավելին՝ bind(), listen(), accept() սերվերի համար
# կամ connect() հաճախորդի համար, send(), recv(), close()