package main import ( "bufio" "fmt" "net" "os" ) func main() { //client https://systembash.com/a-simple-go-tcp-server-and-tcp-client/ // connect to this socket conn, _ := net.Dial("tcp", "127.0.0.1:3333") hostname, err := os.Hostname() if err != nil { fmt.Println(err) os.Exit(1) } fmt.Println("connecting to server as hostname:", hostname) ip := getIp() fmt.Println("local ip:", ip) // send to socket fmt.Fprintf(conn, hostname+", ip: "+ip.String()+"\n") for { message, err := bufio.NewReader(conn).ReadString('\n') if err != nil { fmt.Println(err) fmt.Println("server disconnected") os.Exit(1) } fmt.Print("Command from server: " + message) } } func getIp() net.IP { var ip net.IP ifaces, err := net.Interfaces() if err != nil { fmt.Println(err) } for _, i := range ifaces { addrs, err := i.Addrs() if err != nil { fmt.Println(err) } for _, addr := range addrs { switch v := addr.(type) { case *net.IPNet: ip = v.IP case *net.IPAddr: ip = v.IP } // process IP address } } return ip }