|
|
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 }
|