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,"个字节并退出")
    
    }
  • 相关阅读:
    HTML5 向网页嵌入视频和音频
    HTML5中History.back()页面后退刷新页面
    阻止表单的默认提交事件
    SQL Server 2008带字段注释导入Power Designer 9.5
    CodeSmith将模板文件批量生成文件的方法(转)
    Nhibernate学习心得
    邮件发送代码
    Json的一些了解
    有关js的一个问题
    在IIS上启用Gzip压缩(HTTP压缩)
  • 原文地址:https://www.cnblogs.com/yingger/p/13323341.html
Copyright © 2011-2022 走看看