Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpSoPrm 254 of 280 menu
◀ ▶

Практика на сокеты TCP в Go

Дан адрес:

addr := "127.0.0.1:9090"

Напишите клиент: откройте TCP на addr, отправьте "hi", прочитайте ответ и выведите его.

Дан адрес сервера:

addr := "127.0.0.1:9090"

Поднимите слушатель на addr, примите одно соединение, прочитайте строку в буфер и напечатайте ее.

Дано сообщение:

msg := "task"

Сервер на "127.0.0.1:9090" должен вернуть "echo: task", если клиент отправил msg. Соберите пару клиент-сервер в одном файле: сервер в горутине, клиент в main.

Дан цикл принятия:

for { conn, err := ln.Accept() if err != nil { log.Fatal(err) } go handleConn(conn) }

Допишите handleConn: закрытие соединения, чтение в 256 байт, ответ "ok" без префикса.

Дан следующий клиентский фрагмент:

conn, err := net.Dial("tcp", "127.0.0.1:9090") if err != nil { log.Fatal(err) } conn.Write([]byte("x"))

Скажите, что нужно добавить, чтобы порт освободился при выходе из main даже после ошибки чтения.

Даны два вызова подряд на одном соединении после чтения запроса:

conn.Write([]byte("part1")) conn.Write([]byte("part2"))

Скажите, сколько раз клиенту нужно вызывать чтение, чтобы забрать обе части, если сервер не закрывал канал между записями.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить