Я пытался создать модель клиент-сервер для изучения некоторых вещей, и я просто пытался посылать (записывать) данные от клиента к серверу в цикле, и это просто не сработало. Я думаю, что есть некоторые проблемы параллелизма, и клиент пишет быстрее на сервер и сервер, чем читает несколько операторов за один раз. Как я могу поддерживать этот параллелизм, чтобы сервер мог прочитать только один оператор, написанный клиентом за раз? Вот код, чтобы проиллюстрировать проблему лучше.
Вот сервер handleConnection Function
func main() {
conn, err := net.Listen("tcp", ":8080")
if err != nil {
log.Println("Error:", err)
}
for {
ln, err := conn.Accept()
if err != nil {
log.Println("Error:", err)
continue
}
go handleConnection(ln)
}
}
func handleConnection(conn net.Conn) {
buffer := make([]byte, 4096)
for i := 0; i < 10; i++ {
n, err := conn.Read(buffer)
if err != nil {
fmt.Println(err, i)
}
fmt.Printf("%s\n", buffer[:n])
}
fmt.Println("Done")
conn.Close()
}
Здесь клиент записывает данные на сервер в цикле.
func main() {
conn, err := net.Dial("tcp", ":8080")
if err != nil {
log.Println("Error:", err)
os.Exit(1)
}
for i := 0; i < 10; i++ {
_, err = conn.Write([]byte("Rehan"))
if err != nil {
fmt.Println(err, i)
}
}
fmt.Println("Done")
conn.Close()
}
Это вывод сервера. ] 1