ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Golang Socket编程小实例

2020-07-16 16:31:12  阅读:312  来源: 互联网

标签:Socket err 8090 fmt 编程 Golang Println conn 客户端


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有