package main

import (
	"log"
	"net"
)

const (
	destination = "127.0.0.1:33060"
)

var (
	waitSize = 4                  // 4 message length bytes we expect to get back
	nullMsg  = []byte{0, 0, 0, 0} // to send
)

func main() {
	conn, err := net.Dial("tcp", destination)
	if err != nil {
		log.Fatalf("net.Dial failed: %v", err)
	}
	log.Printf("connected to: %v", destination)

	var bytes int
	bytes, err = conn.Write(nullMsg)
	if bytes != 4 || err != nil {
		log.Fatalf("net.Write failed: only wrote %d of %d bytes: %v", bytes, len(nullMsg), err)
	}
	log.Printf("Wrote %d bytes indicating zero length message size", bytes)

	var buf = make([]byte, waitSize) // bytes to wait for

	log.Printf("Waiting for %d bytes of response", waitSize)
	bytes, err = conn.Read(buf)

	if err != nil {
		log.Fatalf("net.Read failed: only read %d of %d bytes: %v", bytes, len(buf), err)
	}
	log.Printf("Read %d bytes of buf Message", bytes)

	if err = conn.Close(); err != nil {
		log.Fatalf("conn.Close failed: %v", err)
	}
	log.Printf("closed connected to: %v", destination)

}
