zoukankan      html  css  js  c++  java
  • tcp编程

    server
    package main
    
    import (
        "fmt"
        "net"
    )
    
    //单独处理连接的函数
    func process(conn net.Conn) {
        var buf = make([]byte, 1024)
        n, err := conn.Read(buf) // 返回读取到的字节数和错误信息
        if err != nil {
            fmt.Println("接受失败")
            return
        }
        fmt.Println("接收客户端发来的消息", string(buf[:n])) //这里有可能接受到的消息不足1024,所以要取索引
    }
    func main() {
        listener, err := net.Listen("tcp", "127.0.0.1:20000")
        if err != nil {
            fmt.Println("listen:20000 失败,err:", err)
            return
        }
        for {
            conn, err := listener.Accept()
            if err != nil {
                fmt.Println("连接失败,err: ", err)
                continue
            }
            go process(conn)
        }
    
    }
    
    client
    package main
    
    import (
        "bufio"
        "fmt"
        "net"
        "os"
    )
    
    func main() {
        conn, err := net.Dial("tcp", "127.0.0.1:20000")
        if err != nil {
            fmt.Println("连接服务端失败, err", err)
            return
        }
        defer conn.Close()
        reader := bufio.NewReader(os.Stdin)
        input, err := reader.ReadString('
    ')
        if err != nil {
            return
        }
        _, err = conn.Write([]byte(input))
        if err != nil {
            fmt.Println("发送消息失败 err", err)
        }
    }
    




  • 相关阅读:
    Redis 的基本操作、Key的操作及命名规范
    python离线安装外部库(第三方库)
    STL之deque
    STL之list
    STL学习之vector
    STL三种标准容器
    Lua系统库
    Lua输入输出库
    Lua字符串库
    Lua面向对象
  • 原文地址:https://www.cnblogs.com/hualou/p/12070137.html
Copyright © 2011-2022 走看看