golang中使用ftm.scanln 接收终端数据并发送,第二次就无法获取了

问题遇到的现象和发生背景

golang中使用ftm.scanln 接收终端数据并发送,第二次就无法获取了

问题相关代码,请勿粘贴截图
客户端代码:
package main

import (
    "fmt"
    "net"
    _"os"
)

func main() {
    conn, err := net.Dial("tcp", "127.0.0.1:10240")
    if err != nil {
        fmt.Println("conected fail", err)
        return
    }
    //defer conn.Close()

    for {
        var str string
        fmt.Println("please input")
        n, _ := fmt.Scanln(&str)
        fmt.Println(n)
        conn.Write([]byte(str))
        fmt.Printf("send neirong=%v changdu=%d", string([]byte(str)), len([]byte(str)))
        conn.Close()
    }
}

服务器端代码

package main

import (
    "fmt"
    "net"
)

func process(conn net.Conn) {
    b := make([]byte, 1024)

    n, _ := conn.Read(b)

    fmt.Println("accept sucess", string(b[:n]), n)

    conn.Close()

}

func main() {
    listen, err := net.Listen("tcp", "0.0.0.0:10240")
    fmt.Println("server listening please wait ...")
    if err != nil {
        fmt.Println("listen err", err)
    }
    //defer listen.Close()
    for {
        conn, err := listen.Accept()
        if err != nil {
            fmt.Println("accept err", err)

        } else {

            fmt.Println("accept sucess")

        }
        go process(conn)
        //fmt.Println(conn.LocalAddr(), conn.RemoteAddr())
    }

}

运行结果及报错内容

没有报错,但是客户端再循环发送数据的时候,服务器端只能接收第一次发送的数据,第二次客户端只能自己看到

我的解答思路和尝试过的方法

我看了其他人的代码,用bufio包和os包的方法写的循环发送数据,我想知道 fmt.scanln这个也是在终端扫描数据,为什么只能服务器只能接收一次?

我想要达到的结果

服务器端循环接收数据

Scanln在遇到换行时会停止扫描