Golang goroutine和chan 教程04:tcp时间

作者: 我加入简书的路程 | 来源:发表于2019-06-15 12:07 被阅读0次
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
        }
        go 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)
    }
}

哈哈哈哈,我仅仅在handleConn前面加了一个go。就实现了并发。这真是太棒了。和之前相比的是,原版的代码只能同时接受一个nc连接,在连接结束之后才能接受另一个。而现在可以并发的接受很多连接了。

end 下次我们要书写一个nc连接到这个服务器上来。

相关文章

  • Golang goroutine和chan 教程04:tcp时间

    哈哈哈哈,我仅仅在handleConn前面加了一个go。就实现了并发。这真是太棒了。和之前相比的是,原版的代码只能...

  • 【go系列5】golang中的通道

    golang中的通道类型是一种特殊的类型, 类型名字为chan。在任何时候,同时只有一个goroutine访问通道...

  • goroutine 及channel

    本文主要介绍goroutine 和channel的使用。 基础知识介绍 goroutine 是 golang 中在...

  • go channel

    channel channel一般用于goroutine之间的通信;初始化chan :=make(chan int...

  • go学习笔记(四)——并发

    1. goroutine 什么是goroutine goroutine是golang的最小执行单元,每个go程序至...

  • go

    https://golang.google.cn/ goroutine简单示例 goroutine将结果通过cha...

  • 通道channel

    channel特点 chan类型的值本身的并发安全的,因此可用于多个goroutine之间通信 chan使用mak...

  • Channel

    Channel是在goroutine之间同步的方式 定义 ChannelType = ( "chan" | "ch...

  • Golang interface 全面介绍

    [TOC] Golang interface 全面介绍 interface 介绍 如果说goroutine和cha...

  • 【待定】内涵Golang DAO

    背景 内涵近段时间迁移了部分API代码到Golang,主要是为了使用Golang中方便的goroutine。但是开...

网友评论

    本文标题:Golang goroutine和chan 教程04:tcp时间

    本文链接:https://www.haomeiwen.com/subject/sofbfctx.html