Go tcp client 코드 예제
func SendCloudWatch(cloudwatch model.AwsRdsCloudWatch) {
// ... 생략
conn, err := net.Dial("tcp", fmt.Sprintf("%s:%s", host, portStr))
if err != nil {
logger.Error("Failed to connect to TCP server:", err)
return
}
defer conn.Close()
if err := send(conn, data.ToByteArray()); err != nil {
logger.Error("Failed to send data:", err)
}
}
defer 는 예약하는 역할.
func send(conn net.Conn, data []byte) error {
const writeTimeout = 5 * time.Second
totalBytesSent := 0
for totalBytesSent < len(data) {
writeDeadline := time.Now().Add(writeTimeout)
if err := conn.SetWriteDeadline(writeDeadline); err != nil {
return fmt.Errorf("failed to set write deadline: %v", err)
}
bytesSent, err := conn.Write(data[totalBytesSent:])
if err != nil {
return fmt.Errorf("failed to send data: %v", err)
}
totalBytesSent += bytesSent
}
return nil
}