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出错")
return } 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,"个字节并退出")

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章