diff options
| author | jet2tlf <jet2tlf@gmail.com> | 2024-06-03 05:04:02 +0000 |
|---|---|---|
| committer | jet2tlf <jet2tlf@gmail.com> | 2024-06-03 05:04:02 +0000 |
| commit | 747d0b3ec57e31196922b7a4d512e36621cb67fc (patch) | |
| tree | 906bf022f3c4de1b6873c9d812ab6afb71912128 /app/main.go | |
| parent | 96d3b97a49b82860445e5eef11a354fdc750fb9b (diff) | |
| download | dns-server-go-747d0b3ec57e31196922b7a4d512e36621cb67fc.tar.gz dns-server-go-747d0b3ec57e31196922b7a4d512e36621cb67fc.zip | |
codecrafters submit [skip ci]
Diffstat (limited to 'app/main.go')
| -rw-r--r-- | app/main.go | 73 |
1 files changed, 33 insertions, 40 deletions
diff --git a/app/main.go b/app/main.go index 36c8519..46da46d 100644 --- a/app/main.go +++ b/app/main.go @@ -2,47 +2,40 @@ package main import ( "fmt" - // Uncomment this block to pass the first stage - // "net" + "net" ) func main() { - // You can use print statements as follows for debugging, they'll be visible when running tests. - fmt.Println("Logs from your program will appear here!") - - // Uncomment this block to pass the first stage - // - // udpAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:2053") - // if err != nil { - // fmt.Println("Failed to resolve UDP address:", err) - // return - // } - // - // udpConn, err := net.ListenUDP("udp", udpAddr) - // if err != nil { - // fmt.Println("Failed to bind to address:", err) - // return - // } - // defer udpConn.Close() - // - // buf := make([]byte, 512) - // - // for { - // size, source, err := udpConn.ReadFromUDP(buf) - // if err != nil { - // fmt.Println("Error receiving data:", err) - // break - // } - // - // receivedData := string(buf[:size]) - // fmt.Printf("Received %d bytes from %s: %s\n", size, source, receivedData) - // - // // Create an empty response - // response := []byte{} - // - // _, err = udpConn.WriteToUDP(response, source) - // if err != nil { - // fmt.Println("Failed to send response:", err) - // } - // } + udpAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:2053") + if err != nil { + fmt.Println("Failed to resolve UDP address:", err) + return + } + + udpConn, err := net.ListenUDP("udp", udpAddr) + if err != nil { + fmt.Println("Failed to bind to address:", err) + return + } + defer udpConn.Close() + + buf := make([]byte, 512) + + for { + size, source, err := udpConn.ReadFromUDP(buf) + if err != nil { + fmt.Println("Error receiving data:", err) + break + } + + receivedData := string(buf[:size]) + fmt.Printf("Received %d bytes from %s: %s\n", size, source, receivedData) + + response := []byte{} + + _, err = udpConn.WriteToUDP(response, source) + if err != nil { + fmt.Println("Failed to send response:", err) + } + } } |