[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의 공식 문서에서 확인하실 수 있습니다.