Golang goroutine和chan 教程02

我加入简书的路程 · · 574 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一个定期报告时间的tcp服务器

package main

import (
    "io"
    "log"
    "net"
    "time"
)

func main() {
    listenner,err:=net.Listen("tcp","localhost:8000")
    if err != nil {
        log.Fatal(err)
    }
    for  {
        conn,err := listenner.Accept()
        if err != nil {
            log.Print(err)
            continue
        }
        handleConn(conn)
    }
}

func handleConn(c net.Conn) {
    defer c.Close()
    for{
        _,err:=io.WriteString(c,time.Now().Format("15:04:05\n"))
        if err != nil {
            return
        }
        time.Sleep(1*time.Second)
    }
}

之后使用nc(netcat)连接tcp服务器

 nc localhost 8000

返回结果

catdeiMac:mysql cat$ nc localhost 8000
11:12:25
11:12:26
11:12:27
11:12:28
11:12:29
11:12:30
11:12:31
11:12:32
11:12:33
11:12:34
11:12:35
11:12:36
11:12:37


这里是分割线

  • main函数第一行代码使用了net.Listen函数
  • 一个for循环,使用Listener接口的Accept方法
  • 使用handleConn执行io.WriteString(c,time.Now().Format("15:04:05\n"))

接下来是go源代码解释,请看我的下一篇博客


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

本文来自:简书

感谢作者:我加入简书的路程

查看原文:Golang goroutine和chan 教程02

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

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