[go] go 언어의 네트워크 프로그래밍

Go 언어는 효율적이고 간결한 문법을 가지고 있어, 네트워크 프로그래밍에도 매우 적합합니다. 이번 글에서는 Go 언어로 간단한 네트워크 프로그램을 만드는 방법을 알아보겠습니다.

네트워크 프로그래밍이란?

네트워크 프로그래밍은 컴퓨터 간의 데이터 통신을 위한 소프트웨어 개발을 의미합니다. 이는 서버와 클라이언트 간의 통신 뿐만 아니라, 데이터 전송, 웹 서비스, 소켓 프로그래밍 등 다양한 영역에 적용됩니다.

Go의 네트워크 패키지

Go 언어는 표준 라이브러리 내에 net 패키지를 제공하여 네트워크 프로그래밍을 지원합니다. 이 패키지에는 IP 주소, 소켓, TCP/UDP 통신 등을 다룰 수 있는 다양한 기능들이 포함되어 있습니다.

아래는 간단한 TCP 서버를 생성하는 예제 코드입니다.

package main

import (
	"fmt"
	"net"
)

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

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

	for {
		conn, err := listener.Accept()
		if err != nil {
			fmt.Println("Error accepting: ", err.Error())
			return
		}
		go handleRequest(conn)
	}
}

func handleRequest(conn net.Conn) {
	buffer := make([]byte, 4096)
	_, err := conn.Read(buffer)
	if err != nil {
		fmt.Println("Error reading:", err.Error())
	}
	fmt.Println("Received data:", string(buffer))
	conn.Close()
}

위 코드는 8080 포트에서 들어오는 TCP 연결을 받아들이는 간단한 서버를 구현한 것입니다. 요청이 들어오면 handleRequest 함수가 실행되어 데이터를 읽고 화면에 출력한 뒤 연결을 닫습니다.

결론

Go 언어는 간결하면서도 강력한 네트워크 프로그래밍 기능을 제공합니다. net 패키지를 통해 다양한 네트워크 프로그램을 구현할 수 있으며, 실무에서도 널리 사용되고 있는 언어입니다.

참고 문헌: