Junior
Ի՞նչ է socket-ը։
sobes.tech AI
Պատասխան AI-ից
Սոկետ (socket) — ծրագրային ինտերֆեյս (API) ցանցային փոխազդեցության համար միջեւ գործընթացների։ Այն ապահովում է ամպլիտուդային abstraction ցանցային պրոտոկոլների, ինչպես TCP և UDP, հետ աշխատելու համար, թույլ տալով ծրագրերին ուղարկել և ստանալ տվյալներ ցանցի միջոցով։
Նա ներկայացնում է տեղեկատվության փոխանակման վերջնակետը։ Օրինակ, վեբ սերվերը կարող է ընդունել հարցումներ բրաուզերներից, իսկ հաճախորդային ծրագիրը կարող է տվյալներ ուղարկել սերվերին։
Սոկետները հիմնականում երկու տեսակի են՝
- Աղյուսակային (Stream sockets, SOCK_STREAM): Օգտագործում է TCP պրոտոկոլը, ապահովում է հուսալի, հերթականացված տվյալների մատակարարում։ Համապատասխանում է այն ծրագրերին, որոնք պահանջում են մատակարարումի երաշխիք, օրինակ՝ HTTP կամ FTP։
- Դագրամային (SOCK_DGRAM): Օգտագործում է UDP պրոտոկոլը, չի երաշխավորում տվյալների մատակարարումը կամ հերթականությունը։ Օգտագործվում է այնտեղ, որտեղ արագությունը կարևոր է, օրինակ՝ առցանց խաղերում կամ հոսքային տեսանյութերում։
Հիմնական փուլերը socket-ների հետ աշխատելու համար ցանցային ծրագրում (TCP օրինակով).:
- Սոկետի ստեղծում:
socket()կանչով ստանում է socket-ի նկարագրիչը։ - Bind: Սոկետը կապում է որոշակի IP հասցե և պորտ տեղական մեքենայի վրա (սերվերային socket-ի համար):
- Լսում (Listen): Սահմանում է սերվերային socket-ը՝ սպասելու եկող կապերին։
- Ընդունում (Accept): Եկող կապը ընդունում է և ստեղծում նոր socket այդ կապի համար։
- Կապ հաստատում (Connect): Միջնորդը կապվում է սերվերին IP և պորտով (միջնորդային socket-ի համար):
- Ուղարկում/Ստանում (Send/Receive): Տվյալների փոխանակում՝ հաստատված կապի միջոցով։
- Փակել (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()