[go] bufio 패키지를 활용한 네트워크 입출력 처리
  1. 소개
  2. bufio 패키지 소개
  3. 네트워크 입출력 처리 예시

소개

네트워크 입출력 처리는 소켓을 사용하여 데이터를 송수신하는 과정을 의미합니다. 이러한 작업을 효율적으로 처리하기 위해서는 입출력 버퍼링이 중요한데, Go 언어에서는 bufio 패키지를 활용하여 이를 지원합니다.

bufio 패키지 소개

bufio 패키지는 데이터 입출력에 대한 버퍼링을 제공하는 패키지로, 표준 입출력 작업을 보다 효율적으로 처리할 수 있도록 도와줍니다. bufio 패키지를 사용하면 입출력 속도가 개선되고, 데이터를 라인 단위로 읽고 쓸 수 있습니다.

네트워크 입출력 처리 예시

다음은 bufio 패키지를 사용하여 TCP 소켓 통신을 하는 예시입니다.

package main

import (
	"bufio"
	"fmt"
	"net"
)

func main() {
	conn, err := net.Dial("tcp", "example.com:80")
	if err != nil {
		fmt.Println("Error connecting:", err)
		return
	}
	defer conn.Close()

	// bufio를 사용하여 데이터를 읽고 쓰기
	reader := bufio.NewReader(conn)
	writer := bufio.NewWriter(conn)

	// 데이터 쓰기
	writer.WriteString("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
	writer.Flush()

	// 데이터 읽기
	response, err := reader.ReadString('\n')
	if err != nil {
		fmt.Println("Error reading:", err)
		return
	}
	fmt.Println("Response:", response)
}

위 예시에서는 net.Dial을 사용하여 example.com의 80번 포트에 TCP 연결을 생성하고, bufio를 활용하여 데이터를 쓰고 읽는 방법을 보여줍니다.

위의 예시는 일부분만을 다루고 있음을 감안하여, 실제 사용시에는 네트워크 에러 처리 및 더 많은 데이터 교환을 위한 로직이 필요합니다.

더 많은 자세한 정보는 Go 공식 문서에서 확인할 수 있습니다.