go 学习-4

1、携程

package main

import "fmt"

import "time"

func showNum(argc int) {
    for {
        fmt.Println("hello")
        time.Sleep(time.Second * 1)
    }
}

func main() {
    go showNum(666)
    for {
        fmt.Println("world")
        time.Sleep(time.Second * 1)
    }
}

2、go语言简单并发服务器

package main

import "fmt"
import "strings"
import "log"
import "bufio"
import "time"
import "net"

func echo(conn net.Conn, str string) {
    str += "\n"
    //将数据回显个客户端
    conn.Write([]byte(strings.ToUpper(str)))
    time.Sleep(time.Second * 2)
    conn.Write([]byte(str))
    time.Sleep(time.Second * 2)
    conn.Write([]byte(strings.ToLower(str)))
}

//处理每个连接
func handleCon(conn net.Conn) {
    defer conn.Close()
    //扫描
    myScaner := bufio.NewScanner(conn)
    for myScaner.Scan() { //myScaner.Scan(),如果conn又数据过来,就返回真,否则反之
        go echo(conn, myScaner.Text()) //myScanner.Text()是客户端传入的数据

    }

}

func main() {
    listen, err := net.Listen("tcp", ":8000")
    if err != nil {
        log.Fatal(err)
        return
    }

    defer listen.Close()

    for {
        conn, err := listen.Accept()
        if err != nil {
            log.Fatal(err)
            continue
        }
        fmt.Println("有conn连接")
        //处理每个连接
        go handleCon(conn)
    }

}

3、简单客户端

package main

import _ "fmt"
import "net"
import "io"
import "os"
import "log"

func dealRescon(conn net.Conn) {
    io.Copy(os.Stdout, conn)
}

func main() {
    conn, err := net.Dial("tcp", ":8000")
    if err != nil {
        log.Fatal(err)
        return
    }
    defer conn.Close()
    go dealRescon(conn)
    io.Copy(conn, os.Stdin)
}

猜你喜欢

转载自blog.csdn.net/u014749668/article/details/81709366
go4