golang tcp server client

来源:互联网 发布:百分百软件下载 编辑:程序博客网 时间:2024/05/01 09:39

实例代码如下:

server

import (        "fmt"        "net"        "log")func main() {        addr := "0.0.0.0:8080"        tcpAddr, err := net.ResolveTCPAddr("tcp",addr)        if err != nil {                log.Fatalf("net.ResovleTCPAddr fail:%s", addr)        }        listener, err := net.ListenTCP("tcp", tcpAddr)        if err != nil {                log.Fatalf("listen %s fail: %s", addr, err)        } else {                log.Println("rpc listening", addr)        }        for {                conn, err := listener.Accept()                if err != nil {                        log.Println("listener.Accept error:", err)                        continue                }                go handleConnection(conn)        }}func handleConnection(conn net.Conn) {        defer conn.Close()        var buffer []byte = []byte("You are welcome. I'm server.")        n, err := conn.Write(buffer)        if err != nil {                fmt.Println("Write error:", err)        }        fmt.Println("send:", n)        fmt.Println("connetion end")}

client

package mainimport (        "fmt"        "net"        "os")func main() {        conn, err := net.Dial("tcp", "127.0.0.1:8080")        if err != nil {                fmt.Println("dial failed:", err)                os.Exit(1)        }        defer conn.Close()        buffer := make([]byte, 512)        n, err2 := conn.Read(buffer)        if err2 != nil {                fmt.Println("Read failed:", err2)                return        }        fmt.Println("count:", n, "msg:", string(buffer))}

Read函数最多读取len(buffer)个字节到buffer中。

测试

server output:

2017/10/05 00:12:18 rpc listening 0.0.0.0:8080
send: 28
connetion end

client output:

count: 28 msg: You are welcome. I’m server.

原创粉丝点击