编程语言
首页 > 编程语言> > Golang Socket编程小实例

Golang Socket编程小实例

作者:互联网

1.服务端监听并处理接收信息

package main

import (
    "fmt"
    "io"
    "net"
)

func process(conn net.Conn){
    defer conn.Close()

    for {
        fmt.Println("服务器的等 待客户端写入……")
        readByte :=make([]byte,2048)
        // 注意这里是将数据读取到readByte byte数组中,读取个数为n,并不是上面的2048
        n,err :=conn.Read(readByte)
        if err==io.EOF{
            fmt.Println("客户端关闭,服务器关闭")
            return
        }
        if err!=nil{
            fmt.Println("服务器的Reader err=",err)
            return
        }
        // 最终获取到的数据, 取数时要注意,是0~n 个不是2048,因为最终读取到的是n
        readStr :=string(readByte[:n])
        fmt.Println("服务器端读取到数据",readStr)
    }
}

func main(){
    fmt.Println("服务器端开始监听^……")
    // 服务端监听 8090
    listen,err :=net.Listen("tcp","127.0.0.1:8090")
    if err!=nil{
        fmt.Println("监听127.0.0.1:8090出错")
    }
    defer listen.Close()
    for{
        fmt.Println("等待客户端·连接……")
        conn,err :=listen.Accept()
        if err!=nil{
            fmt.Println("接收出错",err)
        }
        fmt.Println("客户端连接成功……")
        fmt.Println(conn)
        go process(conn)
    }


}

2.客户端连接服务端并发送信息

package main

import (
    "fmt"
    "net"
)

func main()  {
    // 建立客户端连接
    conn,err :=net.Dial("tcp","127.0.0.1:8090")
    if err !=nil{
        fmt.Println("建立连接120.0.0.1:8090出错",err)
        return    // 注意 如果连接失败,这里要失败
    }
    fmt.Println("连接120.0.0.1:8090成功!",err)
    defer conn.Close()
    // 发送信息
    whriteStr :="hello word,你好!"
    // 通过conn连接发送信息
    n,err :=conn.Write([]byte(whriteStr))
    if err!=nil{
        fmt.Println("conn whrite err=",err)
    }
    fmt.Println("客户端发送了",n,"个字节并退出")

}

 

标签:Socket,err,8090,fmt,编程,Golang,Println,conn,客户端
来源: https://www.cnblogs.com/yingger/p/13323341.html