Я пытаюсь построить базовую клиент-серверную архитектуру, в которой между ними существует некоторый обмен данными, а также некоторая обработка с обеих сторон.Таким образом, мой сервер имеет два потока, которые отправляют некоторые данные на клиентскую сторону.Я хочу знать, как получать эти данные отдельно в две разные переменные.
Я узнал, хотя я все еще не уверен, что это как-то связано с такими понятиями, как состояние гонки, блокировка мьютекса и т. Д. У меня естьосновная идея о них, но никогда не использовал их практически.Я хочу знать, есть ли какое-то заранее разработанное решение для этой проблемы.
Сторона сервера:
func handleConn(conn net.Conn) {
go func() {
io.WriteString(conn, "Text 1")
}()
go func() {
io.WriteString(conn, "Text 2")
}()
}
Сторона клиента:
func SocketClient(ip string, port string) {
addr := strings.Join([]string{ip, port}, ":")
conn, err := net.Dial("tcp", addr)
defer conn.Close()
if err != nil {
log.Fatalln(err)
}
buff := make([]byte, 1024)
n, _ := conn.Read(buff)
log.Printf("Received: %s", buff[:n])
}
Оба "Текст 1"и" Текст 2 "читаются переменной buff.Я хочу сделать так, как будто есть две отдельные переменные buff1 и buff2 для хранения обоих текстов по отдельности.