[go] Go 언어를 사용한 네트워크 프로그래밍

Go는 Google에서 만든 경량의 프로그래밍 언어로, 네트워크 프로그래밍에 적합한 언어입니다. 이 언어는 간결하고 효율적이며, 동시성 처리를 간단하게 다룰 수 있는 장점을 가지고 있습니다. 이번 포스트에서는 Go를 사용하여 네트워크 프로그래밍을 하는 방법에 대해 알아보겠습니다.

TCP 서버 만들기

package main

import (
    "fmt"
    "net"
)

func main() {
    ln, err := net.Listen("tcp", ":8080")
    if err != nil {
        fmt.Println("Error occurred:", err)
        return
    }
    defer ln.Close()

    fmt.Println("Server is listening on port 8080")

    for {
        conn, err := ln.Accept()
        if err != nil {
            fmt.Println("Error occurred:", err)
            continue
        }
        go handleConnection(conn)
    }
}

func handleConnection(conn net.Conn) {
    defer conn.Close()

    // 클라이언트와의 통신 처리
}

위의 예제는 Go를 사용하여 간단한 TCP 서버를 만드는 방법을 보여줍니다. net 패키지를 사용하여 소켓 프로그래밍을 할 수 있으며, net.Listen으로 포트를 열고, ln.Accept으로 클라이언트의 연결을 받아들입니다.

HTTP 서버 만들기

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hello, World!")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

또한, Go를 사용하여 간단한 HTTP 서버를 만들 수도 있습니다. net/http 패키지를 사용하여 HTTP 프로그래밍을 할 수 있으며, http.HandleFunc으로 URL 패턴과 핸들러 함수를 매핑하고, http.ListenAndServe로 서버를 실행시킬 수 있습니다.

결론

Go는 간결하면서도 강력한 네트워크 프로그래밍 기능을 제공합니다. 네트워크 서버 및 클라이언트를 쉽게 작성할 수 있으며, 동시성 처리를 위한 기능들이 매우 효율적으로 구현되어 있습니다. 따라서, Go는 네트워크 프로그래밍을 하는데 적합한 언어로 평가될 수 있습니다.

더 많은 정보와 예제는 Go의 공식 문서에서 확인하실 수 있습니다.