• Go语言_net篇


    这篇想阅读的是gonet包,net包提供了各种网络IO类型,比如有TCP/IP, UDP, 域名解析, Unix domain socket

    使用这个包能很容易发送一个tcp请求,创建服务器也再也不需要像C语言那样createSocket等一系列繁琐的操作了,用起来那感觉不是一般地爽啊!

     

    下面先创建一个简单的Server端:

    package main

     

    import (

        "net"

        "fmt"

    )

     

    func main() {

        if ln, err := net.Listen("tcp", ":8080"); err == nil {

            defer ln.Close()

            for{

                ln.Accept()

                fmt.Println("Receive a Message")

            }

        }   

    }

     

    和脚本一样简单的写法。

    net.Listen(), 第一个参数是协议,tcp还是udp,第二个参数是ip地址,这里可以不填写IP只填写端口就是

    使用defer Close,将close写在listen之后是个好习惯

    然后再循环中使用Accept()接受消息

     

     

    下面是一个可以进行压力测试的客户端程序

    package main

     

    import (

        "net"

        "fmt"

    )

     

    func main() {

        currency := 20 //并发数,记住,一个连接数是打开一个端口号,window和linux的端口号都是有限制的

        count := 10 //每条连接发送多少次连接

        for i:=0;i<currency;i++ {

            go func(){

                for j:=0;j<count;j++ {

                    sendMessage()

                }

            }()

        }

        select{}

    }

     

    func sendMessage() {

        conn, err := net.Dial("tcp", "127.0.0.1:8080")

        if(err != nil) {

            panic("error")

        }

        header := "GET / HTTP/1.0\r\n\r\n"

        fmt.Fprintf(conn, header)

    }


    实时了解作者更多技术文章,技术心得,请关注微信公众号“轩脉刃的刀光剑影”

    本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名叶剑峰(包含链接http://www.cnblogs.com/yjf512/),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系

  • 相关阅读:
    020-请你说一说app测试的工具
    栈的压入、弹出序列
    包含min函数的栈
    顺时针打印矩阵
    二叉树的镜像
    树的子结构
    链表中倒数第k个结点
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    矩形覆盖
  • 原文地址:https://www.cnblogs.com/yjf512/p/2552296.html
Copyright © 2020-2023  润新知