/* Copyright © 2024 Raul */ package cmd import ( "bufio" "fmt" "net" "os" "github.com/spf13/cobra" ) // clientCmd represents the client command var clientCmd = &cobra.Command{ Use: "client", Short: "Connect to a mini-chat server", Long: `Connect to a mini-chat server. Example: ./mini-chat client --ip 192.168.0.50 --port 1337`, Run: func(cmd *cobra.Command, args []string) { client(cmd) }, } func init() { rootCmd.AddCommand(clientCmd) // Here you will define your flags and configuration settings. // Cobra supports Persistent Flags which will work for this command // and all subcommands, e.g.: // clientCmd.PersistentFlags().String("foo", "", "A help for foo") clientCmd.Flags().String("ip", "", "Server to connect to") clientCmd.Flags().String("port", "1302", "Port to connect to") // Cobra supports local flags which will only run when this command // is called directly, e.g.: // clientCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") } func readMsg(conn net.Conn) error { reply := make([]byte, 1024) conn.Read(reply) fmt.Println(string(reply)) return nil } func client(cmd *cobra.Command) { port, _ := cmd.Flags().GetString("port") ip, _ := cmd.Flags().GetString("ip") if ip == "" { fmt.Println("Not enough arguments, run \"-h\" parameter to see all the parameters!") os.Exit(0) } if port == "" { port = "1302" } socket := ip + ":" + port conn, err := net.Dial("tcp", socket) cobra.CheckErr(err) defer conn.Close() // go func() { // for { // reply := make([]byte, 1024) // conn.Read(reply) // fmt.Println(string(reply)) // } // }() // TODO: GET READING DATA FROM SERVER WORKING for { msg, err := bufio.NewReader(os.Stdin).ReadString('\n') cobra.CheckErr(err) conn.Write([]byte(msg)) go readMsg(conn) } // msg, err := bufio.NewReader(os.Stdin).ReadString('\n') // fmt.Println(msg) //fmt.Println(string(data)) //ui() }