| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package main
- import (
- "fmt"
- "io"
- "log"
- "net"
- "net/http"
- "os"
- )
- func main() {
- // httpExample()
- httpExample2()
- /*
- // Подключаемся к серверу
- conn, err := net.Deal("tcp", "localhost:4545")
- if err != nil {
- fmt.Println(err)
- return
- }
- defer conn.Close()
- for {
- var source string
- // Запрашиваем у пользователя ввод
- fmt.Print("Введите слово: ")
- _, err := fmt.Scan(&source)
- if err != nil {
- fmt.Println("Некорректный ввод", err)
- continue
- }
- // Отправляем сообщение
- if n, err := conn.Write([]byte(source)); n == 0 || err != nil {
- fmt.Println(err)
- return
- }
- // Устанавливаем таймаут на чтение ответа
- fmt.Println("Ответ:")
- conn.SetReadDeadLine(time.Now().Add(time.Second * 5))
- // Чтение данных в отдельном цикле
- // Если сервер пришлет больше данных, они будут обработаны
- for {
- buff := make([]byte, 1024)
- n, err := conn.Read(buff)
- if err != nil {
- break
- }
- fmt.Print(string(buff[0:n]))
- // Сбрасываем таймаут до 700 миллисекунд после первых 1024 байт
- conn.SetReadDeadLine(time.Now().Add(time.Millisecond))
- }
- }
- */
- }
- func httpExample() {
- httpRequest := "GET / HTTP/1.1\n" +
- "Host: go.dev\r\n" +
- "Connection: close\r\n" +
- "\r\n"
- conn, err := net.Dial("tcp", "go.dev:80")
- if err != nil {
- fmt.Println(err)
- return
- }
- defer conn.Close()
- if _, err = conn.Write([]byte(httpRequest)); err != nil {
- fmt.Println(err)
- return
- }
- io.Copy(os.Stdout, conn)
- fmt.Println("Done")
- }
- func httpExample2() {
- // http запрос с методом GET
- resp, err := http.Get("https://golang.org")
- if err != nil {
- log.Println(err)
- return
- }
- // Закрываем телол ответа после работы с ним
- defer resp.Body.Close()
- data, err := io.ReadAll(resp.Body) // читаем ответ
- if err != nil {
- log.Println(err)
- return
- }
- fmt.Printf("%s", data)
- }
|