Как отправить файл по TCP Golang? как через net передать файл? нужен пример сервера и клиента

26 Ноя 2022 в 19:53
196 +1
0
Ответы
1

Для отправки файла по TCP в Golang можно использовать пакет net для создания сервера и клиента. Ниже приведен пример простого сервера и клиента, который отправляет и принимает файл:

Пример сервера:

package main
import (
"fmt"
"net"
"os"
)
func main() {
// Создаем слушатель на порту 8080
l, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Println("Error listening:", err.Error())
os.Exit(1)
}
defer l.Close()
fmt.Println("Listening on 0.0.0.0:8080")
// Принимаем входящее соединение
conn, err := l.Accept()
if err != nil {
fmt.Println("Error accepting: ", err.Error())
os.Exit(1)
}
defer conn.Close()
// Открываем файл на чтение
file, err := os.Open("file.txt")
if err != nil {
fmt.Println("Error opening file: ", err.Error())
os.Exit(1)
}
defer file.Close()
// Отправляем файл по соединению
_, err = io.Copy(conn, file)
if err != nil {
fmt.Println("Error sending file: ", err.Error())
}
}

Пример клиента:

package main
import (
"fmt"
"net"
"os"
)
func main() {
// Соединяемся с сервером
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
fmt.Println("Error connecting:", err.Error())
os.Exit(1)
}
defer conn.Close()
// Создаем файл для записи
file, err := os.Create("received_file.txt")
if err != nil {
fmt.Println("Error creating file: ", err.Error())
os.Exit(1)
}
defer file.Close()
// Принимаем файл по соединению
_, err = io.Copy(file, conn)
if err != nil {
fmt.Println("Error receiving file: ", err.Error())
}
}

Эти примеры создадут сервер, который отправляет файл file.txt клиенту, который принимает файл и сохраняет его как received_file.txt. Для запуска сервера и клиента вам необходимо запустить две разные программы.

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

16 Апр 2024 в 17:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир