## bufio.NewScanner的使用问题

yekai_23 · · 1955 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

最近开始学习golang,发现确实很给力,写了一个回射服务器代码,了解到可以阻塞读数据,也可以借助bufio中的**NewScanner**,我理解这是一个扫描器,用法也大概研究了一下,结果写完代码在linux上没有问题,运行正常,在windows却不能收到客户端数据,希望高手指点一二! 服务器启动后,通过客户端测试,效果如下: ![image.png](https://static.studygolang.com/171230/c99e4436e4d981a9504b1db8ec1d1926.png) 源代码如下: ``` go //回响服务器 package main import ( "time" "fmt" "log" "net" "bufio"//提供扫描器 "strings" ) func main(){ //首先要创建链接侦听器 listener,err := net.Listen("tcp",":8080") if err != nil { log.Fatal(err)//会执行exit } //执行结束自动释放 defer listener.Close() //循环等待客户端连接 for { conn,err := listener.Accept() if err != nil { fmt.Println(err) continue } go handleconn(conn) } } //用于和客户端通信 func handleconn(conn net.Conn){ defer conn.Close() fmt.Println("begin handleconn...\n") //获得一个扫描器,监控客户端是否输入数据 input := bufio.NewScanner(conn) for input.Scan(){//会阻塞等待客户端数据到来 echo(conn,input.Text(),time.Second*1) } fmt.Println("end handleconn...\n") } //回响三声 func echo(conn net.Conn,msg string,deley time.Duration){ fmt.Fprintln(conn,strings.ToUpper(msg)) time.Sleep(deley) fmt.Fprintln(conn,msg) time.Sleep(deley) fmt.Fprintln(conn,strings.ToLower(msg)) } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1955 次点击  
加入收藏 微博
5 回复  |  直到 2018-01-09 00:37:35
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传