Простой пример сокетов на golang

Пример использования сокетов на Golang: ```go package main import ( "fmt" "net" ) func main() { // создание сокета socket, err := net.Dial("tcp", "localhost:8000") if err != nil { fmt.Println("Ошибка при создании сокета:", err) return } defer socket.Close() // отправка сообщения msg := "Hello, server!" _, err = socket.Write([]byte(msg)) if err != nil { fmt.Println("Ошибка при отправке сообщения:", err) return } // получение ответа от сервера response := make([]byte, 1024) _, err = socket.Read(response) if err != nil { fmt.Println("Ошибка при чтении ответа:", err) return } fmt.Println("Ответ сервера:", string(response)) } ``` Серверная часть для принятия сообщений выглядит так: ```go package main import ( "fmt" "net" ) func main() { // создание сокета listener, err := net.Listen("tcp", ":8000") if err != nil { fmt.Println("Ошибка при создании сокета:", err) return } defer listener.Close() // обработка подключений for { conn, err := listener.Accept() if err != nil { fmt.Println("Ошибка при подключении клиента:", err) return } go handleRequest(conn) } } func handleRequest(conn net.Conn) { defer conn.Close() // чтение сообщения от клиента request := make([]byte, 1024) _, err := conn.Read(request) if err != nil { fmt.Println("Ошибка при чтении сообщения:", err) return } fmt.Println("Сообщение от клиента:", string(request)) // отправка ответа клиенту response := "Hello, client! I got your message" _, err = conn.Write([]byte(response)) if err != nil { fmt.Println("Ошибка при отправке ответа:", err) return } } ``` Это минимальный пример, который можно доработать для своих задач.