zoukankan      html  css  js  c++  java
  • 32_Go基础(TCP通信)

    Server:

    package main
    
    import (
        "bufio"
        "fmt"
        "net"
    )
    
    func worker(conn net.Conn) {
        defer conn.Close()
        for {
            reader := bufio.NewReader(conn)
            var buf [128]byte
            n, err := reader.Read(buf[:]) // 读取数据
            if err != nil {
                fmt.Println("Read msg from client failed ,err: ", err)
                break
            }
    
            resStr := string(buf[:n])
            fmt.Println("收到Client的数据:", resStr)
            conn.Write([]byte(resStr)) // 发送数据
        }
    }
    
    func main() {
        listen, err := net.Listen("tcp", "127.0.0.1:9000")
        if err != nil {
            fmt.Println("Listen failed,err: ", err)
            return
        }
    
        for {
            conn, err := listen.Accept() // 建立链接
            if err != nil {
                fmt.Println("Accept failed, err: ", err)
            }
            go worker(conn) // 启动一个 goroutine 处理
        }
    }

    Client: 

    package main
    
    import (
        "bufio"
        "fmt"
        "net"
        "os"
        "strings"
    )
    
    func main() {
        conn, err := net.Dial("tcp", "127.0.0.1:9000")
        if err != nil {
            fmt.Println("err: ", err)
        }
        defer conn.Close()
    
        cReader := bufio.NewReader(os.Stdin)
        for {
            input, _ := cReader.ReadString('\n')
            info := strings.Trim(input, "\r\n")
            if strings.ToUpper(info) == "Q" { // 如果输入q/Q,就退出
                return
            }
            _, err := conn.Write([]byte(info)) // 发送数据
            if err != nil {
                buf := [512]byte{}
                n, err := conn.Read(buf[:])
                if err != nil {
                    fmt.Println("Client receive msg err: ", err)
                    return
                }
                fmt.Println(string(buf[:n]))
            }
        }
    }
  • 相关阅读:
    nginx日志格式
    nginx默认虚拟主机
    php各种编译错误汇总
    php.ini中最好禁止的一些函数
    php常用的操作
    快速扫描某个服务器上所有开放端口
    LOJ6303:水题——题解
    BZOJ5323 & 洛谷4562:[JXOI2018]游戏——题解
    BZOJ5333:[SDOI2018]荣誉称号——题解
    LOJ2587:[APIO2018]铁人两项——题解
  • 原文地址:https://www.cnblogs.com/luwei0915/p/15523610.html
Copyright © 2011-2022 走看看