From 8da6e4d2d9a5e86d0530c962334292d0f9bf406b Mon Sep 17 00:00:00 2001 From: Ian Andwati Date: Thu, 19 Dec 2024 18:35:47 +0300 Subject: [PATCH] implemented the network client --- internal/network/client.go | 35 +++++++++++++++++++++++++++++++++++ internal/network/config.go | 5 +++++ 2 files changed, 40 insertions(+) diff --git a/internal/network/client.go b/internal/network/client.go index 1ae2e9d..1c43c0d 100644 --- a/internal/network/client.go +++ b/internal/network/client.go @@ -1 +1,36 @@ package network + +import ( + "net" + "time" +) + +func SendDNSQuery(query []byte, server string) ([]byte, error) { + conn, err := net.Dial("udp", server) + if err != nil { + return nil, err + } + defer func(conn net.Conn) { + err := conn.Close() + if err != nil { + + } + }(conn) + + err = conn.SetDeadline(time.Now().Add(DefaultTimeout)) + if err != nil { + return nil, err + } + + if _, err := conn.Write(query); err != nil { + return nil, err + } + + response := make([]byte, 512) + n, err := conn.Read(response) + if err != nil { + return nil, err + } + + return response[:n], nil +} diff --git a/internal/network/config.go b/internal/network/config.go index 1ae2e9d..db23296 100644 --- a/internal/network/config.go +++ b/internal/network/config.go @@ -1 +1,6 @@ package network + +import "time" + +const DefaultServer = "8.8.8.8:53" +const DefaultTimeout = 5 * time.Second