Я кодирую сеть сокетов с Golang
, я хочу отправить данные в клиент с помощью goroutine и прочитать данные на сервере также с помощью goroutine. часть моего кода:
клиент:
buf := bufio.NewReader(file)
var toWrite [][]byte
for {
w, _, end := buf.ReadLine()
if end == io.EOF {
break
}
toWrite = append(toWrite, w)
}
var wg sync.WaitGroup
wg.Add(len(toWrite))
for _, word := range toWrite {
w := word
go func() {
defer wg.Done()
conn.Write(append(w, byte('\n')))
log.Info(string(w), "\n")
}()
}
wg.Wait()
сервер:
for {
conn, err := listen.Accept()
defer conn.Close()
if err != nil {
log.Fatal("accept err: ", err)
break
}
go func() {
data := make([]byte, 1024)
for {
_, err := conn.Read(data)
if err != nil {
break
}
log.Info(string(data))
}
}()
}
Однако, когда я запускаю их в своем терминале, иногда он показывает некоторые неполные слова
INFO[2019-10-15T23:36:11+08:00] increased
based
Up
p // no "p" in my file
Up
Up
Up
Up
Up
Up
Up
Up
Up
Up
Up
(в файле, который я открыл в клиенте, много "вверх") есть ли способ это исправить?