Sobes.tech
Back to questions
Senior
4

Что такое сокеты и какими они бывают?

Companies where asked
AvitoAvito

Answer from AI

sobes.tech AI

Сокеты — это программный интерфейс для организации сетевого взаимодействия между процессами, часто между разными компьютерами. Они позволяют приложениям обмениваться данными по сети, используя различные протоколы.

Основные типы сокетов:

  • Stream sockets (TCP) — обеспечивают надежную, ориентированную на соединение передачу данных. Используются для протокола TCP.
  • Datagram sockets (UDP) — обеспечивают передачу сообщений без установления соединения, без гарантии доставки. Используются для протокола UDP.
  • Raw sockets — позволяют работать с сетевыми протоколами на низком уровне, например, для реализации собственных протоколов или анализа трафика.

В Go для работы с сокетами используется пакет net. Пример создания TCP-сервера:

package main

import (
    "fmt"
    "net"
)

func main() {
    ln, err := net.Listen("tcp", ":8080")
    if err != nil {
        panic(err)
    }
    defer ln.Close()

    for {
        conn, err := ln.Accept()
        if err != nil {
            fmt.Println("Error accepting connection:", err)
            continue
        }
        go handleConnection(conn)
    }
}

func handleConnection(c net.Conn) {
    defer c.Close()
    buf := make([]byte, 512)
    n, err := c.Read(buf)
    if err != nil {
        fmt.Println("Error reading:", err)
        return
    }
    fmt.Println("Received:", string(buf[:n]))
}

Таким образом, сокеты — это фундаментальный механизм для сетевого взаимодействия, а их типы определяют способ и надежность передачи данных.