zoukankan      html  css  js  c++  java
  • 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,"个字节并退出")
    
    }
  • 相关阅读:
    简单分页案例
    layer弹出层
    layDate 日期与时间组件 入门
    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools":解决方案
    eclipse常用快捷键
    javascript DOM编程艺术(第2版)
    webstorm破解
    Intellij IDEA搭建vue-cli项目
    颜色rgba、hsla
    文本阴影、换行、溢出
  • 原文地址:https://www.cnblogs.com/yingger/p/13323341.html
Copyright © 2011-2022 走看看