package main import ( "bytes"; "encoding/binary"; "flag"; "fmt"; "net"; "os"; "./build/msg/msg" ) const ( defaultServer = "127.0.0.1:7777"; defaultName = "tester"; defaultData = "Das ist ein Test" ) var serverAddr *string = flag.String("s", defaultServer, "server:port to connect to") var name *string = flag.String("n", defaultName, "nickname to send to server") var data *string = flag.String("d", defaultData, "message to send to server") func talker(conn *net.TCPConn) { message := new(msg.Message) message.SetSender(*name) message.SetData(*data) bytebuf := make([]byte, 0, message.SenderLen + message.DataLen + 8) buf := bytes.NewBuffer(bytebuf) if e := binary.Write(buf, binary.LittleEndian, message.SenderLen); e != nil { fmt.Fprintf(os.Stderr, "Error: %v\n", e) } if num, _ := buf.WriteString(message.GetSender()); uint32(num) != message.SenderLen { fmt.Fprintf(os.Stderr, "Error: %d != %d\n", num, message.SenderLen) } if e := binary.Write(buf, binary.LittleEndian, message.DataLen); e != nil { fmt.Fprintf(os.Stderr, "Error: %v\n", e) } if num, _ := buf.WriteString(message.GetData()); uint32(num) != message.DataLen { fmt.Fprintf(os.Stderr, "Error: %d != %d\n", num, message.DataLen) } if num, e := conn.Write(buf.Bytes()); num < 0 { fmt.Fprintf(os.Stderr, "Error: %v\n", e) } } func main() { flag.Parse() socket, e := net.ResolveTCPAddr(*serverAddr) if e != nil { fmt.Fprintf(os.Stderr, "Error: %v\n", e) os.Exit(1) } conn, e := net.DialTCP("tcp4", nil, socket) if e != nil { fmt.Fprintf(os.Stderr, "Error: %v\n", e) os.Exit(1) } talker(conn) conn.Close() }