11package main
22
33import (
4+ "bufio"
45 "fmt"
56 "log"
67 "math/rand"
78 "net"
89 "os"
910 "strings"
1011 "sync"
12+ "time"
1113
1214 ui "github.com/gizak/termui/v3"
1315 "github.com/gizak/termui/v3/widgets"
@@ -29,26 +31,31 @@ var intToColor = []string{
2931
3032func readMessage (conn net.Conn , message chan string ) (string , error ) {
3133 for {
32- buffer := make ([] byte , 1024 )
33- length , err := conn . Read ( buffer )
34+ reader := bufio . NewReader ( conn )
35+ msg , err := reader . ReadString ( '\n' )
3436 if err != nil {
3537 return "" , err
3638 }
3739
3840 name := conn .LocalAddr ().String ()
3941 _ , ok := nameToColor [name ]
4042 if ! ok {
43+ rand .Seed (time .Now ().UnixNano ())
4144 nameToColor [name ] = intToColor [rand .Intn (8 )]
4245 }
4346 color := nameToColor [name ]
4447
45- msg := strings .TrimSpace (string (buffer [:length ]))
46- message <- (fmt .Sprintf ("[%s](fg:%s)" , msg , color ))
48+ msg = strings .TrimSpace (msg )
49+ if msg != "1" {
50+ message <- (fmt .Sprintf ("[%s](fg:%s)" , msg , color ))
51+ }
4752 }
4853}
4954
5055func writeMessage (conn net.Conn , message string ) error {
51- _ , err := conn .Write ([]byte (message ))
56+ writer := bufio .NewWriter (conn )
57+ _ , err := writer .WriteString (message + "\n " )
58+ writer .Flush ()
5259 if err != nil {
5360 fmt .Println ("Error writing to server:" , err .Error ())
5461 return err
@@ -57,12 +64,11 @@ func writeMessage(conn net.Conn, message string) error {
5764}
5865
5966func main () {
60- if len (os .Args ) != 3 {
61- fmt .Println ("Usage: client <server-address> <username> " )
67+ if len (os .Args ) != 2 {
68+ fmt .Println ("Usage: client <server-address>" )
6269 os .Exit (1 )
6370 }
6471 serverAddress := os .Args [1 ]
65- username := os .Args [2 ]
6672
6773 if err := ui .Init (); err != nil {
6874 log .Fatalf ("failed to initialize termui: %v" , err )
@@ -117,7 +123,7 @@ func main() {
117123 ui .Render (sendMessageBox )
118124 case e .ID == "<Enter>" && len (sendMessageBox .Text ) > 0 :
119125 receivedMessageList .Rows = append (receivedMessageList .Rows , fmt .Sprintf ("[You: %s](fg:magenta)" , sendMessageBox .Text ))
120- writeMessage (conn , username + ": " + sendMessageBox .Text )
126+ writeMessage (conn , sendMessageBox .Text )
121127 sendMessageBox .Text = ""
122128 receivedMessageList .ScrollBottom ()
123129 ui .Render (receivedMessageList )
0 commit comments