zoukankan      html  css  js  c++  java
  • go 网络编程

    网络编程

    tcp

    1.tcp客户端服务端实现

    server/server.go

    package main
    
    import (
        "fmt"
        "net"
    )
    
    /*
    tcp客户端服务端实现
    */
    
    func process(conn net.Conn){
        //这里我们循环接收客户端发送的消息
        defer conn.Close()
    
        for{
            //创建一个新的切片
            buf:=make([]byte,1024)
            //conn.Read(buf)
            //1.等待客户端通过conn发送消息
            //2.如果客户端没有write[发送],那么协程就阻塞在这里
            fmt.Printf("服务器在等待客户端%s 发送消息
    ",conn.RemoteAddr().String())
            n,err:=conn.Read(buf)//从conn读取
            if err!=nil{
                fmt.Printf("客户端退出 err=%v",err)
                return
            }
            //3.显示客户端发送的内容,到服务器的终端
            fmt.Print(string(buf[:n]))
        }
    }
    
    func main(){
        fmt.Println("服务器开始监听。。")
        //net.Listen("tcp","0.0.0.0:8888")
        listen,err:=net.Listen("tcp","0.0.0.0:8888")
        if err!=nil{
            fmt.Println("listen err=",err)
            return
        }
        defer listen.Close()//延时关闭listen
    
        //循环等待客户端连接
        for{
            //等待客户端连接
            fmt.Println("等待客户端")
            conn,err:=listen.Accept()
            if err!=nil{
                fmt.Println("Accept() en=",err)
            }else{
                fmt.Printf("Accept() suc con=%v 客户端ip=%v
    ",conn,conn.RemoteAddr().String())
            }
            //这里准备一个协程,为客户端服务
            go process(conn)
        }
        fmt.Printf("listen suc=%v
    ",listen)
    }
    View Code

    client/client.go

    package main
    
    import (
        "bufio"
        "fmt"
        "net"
        "os"
        "strings"
    )
    
    func main(){
        conn,err:=net.Dial("tcp","192.168.1.107:8888")
        if err!=nil{
            fmt.Println("client dial err=",err)
            return
        }
        //功能一:客户端可以发送单行数据,然后就退出
        reader:=bufio.NewReader(os.Stdin)//os.Stdin 代表标准输入终端
    for{
    
        //从服务端读取一行用户输入,并准备发送给服务器
        line,err:=reader.ReadString('
    ')
        if err!=nil{
            fmt.Println("readString err=",err)
        }
        line=strings.Trim(line,"
    ")
        if line=="exit"{
            fmt.Println("客户端退出。。。")
            break
        }
        //再将line发送给服务器
        n,err:=conn.Write([]byte(line))
        if err!=nil{
            fmt.Println("conn.Write err=",err)
        }
        fmt.Printf("客户端发送了%d字节的数据",n)
    
    }
    }
    View Code

    2.

  • 相关阅读:
    clientHeight、offsetHeight和scrollHeight
    关于网页元素的定位问题及offsetParent的讨论
    SQL关闭自增长列标识:SET IDENTITY_INSERT
    动态添加对Web Service的引用
    关于asp.net导出Excel
    scrollTop、scrollLeft、scrollWidth、scrollHeight
    ADO.NET实体数据模型
    不能加断点 单步调试被跳过
    无法启动程序“http://localhost:3303/Default.aspx”
    asp.net本质论学习笔记第一章
  • 原文地址:https://www.cnblogs.com/huay/p/12188409.html
Copyright © 2011-2022 走看看