qq791199527 2022-01-10 09:42 采纳率: 66.7%
浏览 39

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这个也是在终端扫描数据,为什么只能服务器只能接收一次?

我想要达到的结果

服务器端循环接收数据

  • 写回答

1条回答 默认 最新

  • ilmss 2022-01-10 10:31
    关注

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

    评论

报告相同问题?

问题事件

  • 创建了问题 1月10日

悬赏问题

  • ¥20 找能定制Python脚本的
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?
  • ¥15 通信专业本科生论文选这两个哪个方向好研究呀
  • ¥50 我在一个购物网站的排队系统排队,这个排队到号后重新定向到目标网站进行购物,但是有技术牛通过技术方法直接跳过排队系统进入目标网址购物,有没有什么软件或者脚本可以用
  • ¥15 ios可以实现ymodem-1k协议 1024字节传输吗?
  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办