[go] bufio 패키지를 사용한 소켓 입출력 처리

소켓 프로그래밍을 할 때 입출력 데이터를 효율적으로 처리하기 위해서 bufio 패키지를 사용할 수 있습니다. 이 패키지는 소켓으로부터 데이터를 읽고 쓰는 데 유용한 도구를 많이 제공합니다.

소켓 연결 설정

먼저, Go에서 소켓을 연결하고 입출력을 처리하기 위해 net 패키지를 사용합니다.

import (
    "net"
    "bufio"
)

소켓으로부터 데이터 읽기

net.Conn을 통해 연결된 소켓으로부터 데이터를 읽기 위해서는 bufio.NewReader를 사용하여 Reader를 생성한 후 ReadString 또는 다른 Read 메서드를 사용하여 데이터를 읽을 수 있습니다.

conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
    // 에러 처리
}

reader := bufio.NewReader(conn)
data, err := reader.ReadString('\n')
if err != nil {
    // 에러 처리
}

// data 사용

소켓으로 데이터 쓰기

net.Conn을 통해 연결된 소켓에 데이터를 쓰기 위해서는 bufio.NewWriter를 사용하여 Writer를 생성한 후 WriteString 또는 다른 Write 메서드를 사용하여 데이터를 쓸 수 있습니다.

conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
    // 에러 처리
}

writer := bufio.NewWriter(conn)
_, err = writer.WriteString("Hello, World!\n")
if err != nil {
    // 에러 처리
}

err = writer.Flush()
if err != nil {
    // 에러 처리
}

요약

bufio 패키지는 소켓 프로그래밍에서 데이터를 효율적으로 처리하는 데 유용한 도구를 제공합니다. bufio.Readerbufio.Writer를 사용하여 소켓으로부터 데이터를 읽고 쓰는 것은 물론, 데이터를 버퍼링하여 입출력 작업의 성능을 최적화할 수 있습니다.

참고 자료