为了账号安全,请及时绑定邮箱和手机立即绑定

golang的网络编程http

标签:
Go


服务器

// code_054_http_service_02 project main.go

package main

import (

    "fmt"

    "net/http"

)

//服务端编写的业务逻辑处理程序

//hander函数: 具有func(w http.ResponseWriter, r *http.Requests)签名的函数

func myHandler(w http.ResponseWriter, r *http.Request) {

    fmt.Println(r.RemoteAddr, "连接成功")  //r.RemoteAddr远程网络地址

    fmt.Println("method = ", r.Method) //请求方法

    fmt.Println("url = ", r.URL.Path)

    fmt.Println("header = ", r.Header)

    fmt.Println("body = ", r.Body)

    w.Write([]byte("hello go")) //给客户端恢复的数据

}

func main() {

    http.HandleFunc("/go", myHandler)

    //该方法用于在指定的 TCP 网络地址 addr 进行监听,然后调用服务端处理程序来处理传入的连接请求。

    //该方法有两个参数:第一个参数 addr 即监听地址;第二个参数表示服务端处理程序,通常为空

    //第二个参数为空意味着服务端调用 http.DefaultServeMux 进行处理

    http.ListenAndServe("127.0.0.1:8006", nil)

}

客户端

// code_054_http_client_02 project main.go

package main

import (

    "fmt"

    "io"

    "log"

    "net/http"

)

func main() {

    //get方式请求一个资源

    //resp, err := http.Get("http://www.baidu.com")

    //resp, err := http.Get("http://www.neihan8.com/article/index.html")

    resp, err := http.Get("http://127.0.0.1:8000/go")

    if err != nil {

        log.Println(err)

        return

    }

    defer resp.Body.Close() //关闭

    fmt.Println("header = ", resp.Header)

    fmt.Printf("resp status %s\nstatusCode %d\n", resp.Status, resp.StatusCode)

    fmt.Printf("body type = %T\n", resp.Body)

    buf := make([]byte, 2048) //切片缓冲区

    var tmp string

    for {

        n, err := resp.Body.Read(buf) //读取body包内容

        if err != nil && err != io.EOF {

            fmt.Println(err)

            return

        }

        if n == 0 {

            fmt.Println("读取内容结束")

            break

        }

        tmp += string(buf[:n]) //累加读取的内容

    }

    fmt.Println("buf = ", string(tmp))

}

©著作权归作者所有:来自51CTO博客作者ck_god的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消