02 exercises client server

https://github.com/andcloudio/go-concurrency-exercises/tree/master/01-exercise-solution

client.go

package main

import (
    "io"
    "log"
    "net"
    "os"
)

func main() {
    // connect to server on localhost port 8000
    conn, err := net.Dial("tcp", "localhost:8000")

    if err != nil {
        log.Fatal(err)
    }

    defer conn.Close()

    // 將 server 傳來的 複製到 os.Stdout 來顯示出來
    mustCopy(os.Stdout, conn)

}

// mustCopy - utility function
func mustCopy(dst io.Writer, src io.Reader) {
    if _, err := io.Copy(dst, src); err != nil {
        log.Fatal(err)
    }
}

server.go

package main

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

func main() {
    // write server program to handle concurrent client connections.
    listener, err := net.Listen("tcp", "localhost:8000")

    if err != nil {
        log.Fatal(err)
    }

    for {
        conn, err := listener.Accept()

        if err != nil {
            continue
        }
        go handleConn(conn)
    }
}

// handleConn - utility function
func handleConn(c net.Conn) {
    defer c.Close()
    for {
        _, err := io.WriteString(c, "response from server\n")
        if err != nil {
            return
        }
        time.Sleep(time.Second)
    }
}
© Kimi Tsai all right reserved.            Updated : 2023-07-12 09:04:54

results matching ""

    No results matching ""

    results matching ""

      No results matching ""