go网络编程——http编程

一、Web工作流程

Web服务器的工作原理可以简单归纳为:

1. 客户端通过TCP/IP协议与服务器建立连接

2. 客户端向服务器发送HTTP协议请求包,请求服务器里的文档资源

3. 服务器向客户端发送HTTP协议应答包,如果请求的资源中包含动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端

4. 客户端与服务器断开TCP连接。由客户端解释HTML文档,在客户端屏幕上渲染图形效果

二、HTTP协议

超文本传输协议(HTTP)是互联网上应用最为广泛的一种网络协议,它详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议

HTTP协议通常承载于TCP协议之上

HTTP服务器端httpServer\maingo:

package main

import (
	"fmt"
	"net/http"
)

//handler函数
func myHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Println(r.RemoteAddr, "连接成功")
	//请求方式: GET POST DELETE PUT UPDATE
	fmt.Println("method:", r.Method)
	// /go
	fmt.Println("url:", r.URL.Path)
	fmt.Println("header:", r.Header)
	fmt.Println("body:", r.Body)
	//响应回复(显示在浏览器的内容)
	w.Write([]byte("恭喜!你get到了"))
}
func main() {
	//http://127.0.0.1:8000/go
	//单独写回调函数
	fmt.Println("Listening……")
	http.HandleFunc("/go_zls", myHandler)
	//addr:监听的地址
	//handler:回调函数
	http.ListenAndServe("127.0.0.1:8000", nil)
}

HTTP客户端httpClient\main.go:

package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	resp, _ := http.Get("http://127.0.0.1:8000/go_zls")
	defer resp.Body.Close()
	//200 OK
	fmt.Println(resp.Status)
	fmt.Println(resp.Header)

	buf := make([]byte, 1024)
	for {
		//接收服务端信息
		n, err := resp.Body.Read(buf)
		if err != nil && err != io.EOF {
			fmt.Println("http error, err:", err)
			return
		} else {
			fmt.Println("读取完毕")
			res := string(buf[:n])
			fmt.Println(res)
			break
		}
	}
}

 

客户端输出结果:

也可用在浏览器地址栏输入http://localhost:8000/go_zls,显示结果如下:

服务器端输出如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值