[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.Reader
및 bufio.Writer
를 사용하여 소켓으로부터 데이터를 읽고 쓰는 것은 물론, 데이터를 버퍼링하여 입출력 작업의 성능을 최적화할 수 있습니다.