• 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)
    continue } 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,"个字节并退出")
    
    }
  • 相关阅读:
    go学习笔记day01
    go学习笔记day02
    SQLSERVER SQL性能优化
    Javascript面向对象编程(二):构造函数的继承
    Net 下采用GET/POST/SOAP方式动态调用WebService
    Asp.Net下采用GET/POST/SOAP方式动态调用WebService
    crontab用法(例子)
    Javascript面向对象编程(三):非构造函数的继承
    学习Javascript闭包(Closure)
    js 模拟队列类
  • 原文地址:https://www.cnblogs.com/yingger/p/13323341.html
Copyright © 2020-2023  润新知