@ike_lowe
В Golang есть много стандартных пакетов для работы с сетевыми протоколами. Для работы с протоколами на низком уровне, таких как TCP и UDP, можно использовать пакеты net
и syscall
. Для работы с протоколами на более высоком уровне, таких как HTTP и WebSocket, можно использовать соответствующие стандартные пакеты.
Например, для создания TCP-сервера можно использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package main import ( "fmt" "net" ) func main() { listener, err := net.Listen("tcp", ":1234") if err != nil { panic(err) } defer listener.Close() fmt.Println("Server listening on", listener.Addr()) for { conn, err := listener.Accept() if err != nil { fmt.Println("Error accepting connection:", err) continue } go handleConnection(conn) } } func handleConnection(conn net.Conn) { defer conn.Close() fmt.Println("Accepted connection from", conn.RemoteAddr()) // Handle the connection... } |
В этом примере мы создаем TCP-сервер, который слушает порт 1234 и принимает входящие соединения. Каждое входящее соединение обрабатывается в отдельной горутине, которая вызывает функцию handleConnection
. В этой функции мы можем обрабатывать входящие данные и отправлять ответы.
Для работы с HTTP-серверами можно использовать пакеты net/http
и http
. Вот пример простого HTTP-сервера:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") }) http.ListenAndServe(":8080", nil) } |
В этом примере мы создаем HTTP-обработчик, который возвращает "Hello, World!" в ответ на любой запрос. Мы регистрируем этот обработчик с помощью функции http.HandleFunc
и запускаем HTTP-сервер на порту 8080 с помощью функции http.ListenAndServe
.
Это только небольшой пример того, как можно использовать стандартные пакеты Golang для работы с сетевыми протоколами. Golang имеет много возможностей для работы с сетевыми приложениями, и вы можете найти дополнительную информацию в официальной документации Golang.