Сокеты — это программный интерфейс для организации сетевого взаимодействия между процессами, часто между разными компьютерами. Они позволяют приложениям обмениваться данными по сети, используя различные протоколы.
Что такое сокеты и какими они бывают?
Сокеты — это программный интерфейс для организации сетевого взаимодействия между процессами, часто между разными компьютерами. Они позволяют приложениям обмениваться данными по сети, используя различные протоколы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сокеты — это программный интерфейс для организации сетевого взаимодействия между процессами, часто между разными компьютерами. Они позволяют приложениям обмениваться данными по сети, используя различные протоколы.
Основные типы сокетов:
- 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]))
}
Таким образом, сокеты — это фундаментальный механизм для сетевого взаимодействия, а их типы определяют способ и надежность передачи данных.