问题遇到的现象和发生背景
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这个也是在终端扫描数据,为什么只能服务器只能接收一次?
我想要达到的结果
服务器端循环接收数据