Sobes.tech
Junior
169

Socket дегеніміз не?

AI-дан жауап

sobes.tech AI

Сокет (socket) — бұл екі бағдарлама арасындағы желі арқылы екіжақты желілік өзара әрекеттестіктің соңғы нүктесінің абстракциясы.

Желілік бағдарламалау контекстінде, сокет — бұл бағдарламалық объект, ол:

  • IP-мекенжай + порт жұбы арқылы идентификацияланады.
  • Мәліметтерді жіберу және қабылдау үшін интерфейс болып табылады.
  • Процестерге ақпарат алмасу тәсілін ұсынады, олар бір машинада немесе әртүрлі машиналарда орналасқан болса да.

Транспорт деңгейі протоколына байланысты екі негізгі типтік сокет бар:

  1. TCP-сокеттер (ағындар):
    • TCP протоколын пайдаланады.
    • Сенімді, қосылымға бағытталған ағынды деректерді беру қамтамасыз етеді.
    • Мәліметтердің жеткізілуін, тәртібін сақтау және қайталанулардың болмауын кепілдейді.
    • Сенімді жеткізу талап ететін протоколдар үшін пайдаланылады (HTTP, FTP, SSH).
  2. UDP-сокеттер (дейтаграммалар):
    • UDP протоколын пайдаланады.
    • Сенімсіз, қосылымсыз деректерді дейтаграммалар түрінде жеткізеді.
    • Жеткізу, тәртіп немесе қайталанулардың болуын кепілдемейді.
    • Жылдамдығы маңызды болған протоколдар үшін пайдаланылады (DNS, ағынды видео/аудио).

Java-да сокет программалау java.net пакетіндегі сыныптар арқылы жүзеге асырылады:

  • Socket — клиенттік TCP-сокеттер үшін.
  • ServerSocket — серверлік TCP-сокеттер үшін.
  • DatagramSocket — UDP-сокеттер үшін.
  • DatagramPacket — UDP-дейтаграммалары үшін.

Қарапайым TCP-клиенттің мысалы:

import java.net.Socket;
import java.io.OutputStream;

// TCP-клиент сыныбы
public class SimpleTcpClient {

    // Сокетті құру және пайдалану әдісі
    public static void main(String[] args) {
        try {
            // Клиенттік сокетті құру, серверге localhost:12345-ке қосылу
            Socket socket = new Socket("localhost", 12345);
            System.out.println("Серверге қосылды.");

            // Мәліметтерді жіберу үшін шығу ағынын алу
            OutputStream outputStream = socket.getOutputStream();
            String message = "Клиенттен сәлем!";
            outputStream.write(message.getBytes()); // Мәліметтерді жіберу

            // Сокетті жабу
            socket.close();
            System.out.println("Сокет жабылды.");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}