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)
    }
}




原文地址:https://www.cnblogs.com/hualou/p/12070137.html