码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Go语言网络编程(socket编程)http编程


    1、http编程

    1.1.1 web工作流程

    Web服务器的工作原理可以简单地归纳为
    客户机通过TCP/IP协议建立到服务器的TCP连接
    客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档
    服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端
    客户机与服务器断开。由客户端解释HTML文档,在客户端屏幕上渲染图形结果

    1.1.2. HTTP协议

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

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

    1.1.3.HTTP服务端

    package main
    
    import (
        "fmt"
        "net/http"
    )
    
    func main() {
        //http://127.0.0.1:8000/go
        // 单独写回调函数
        http.HandleFunc("/go", myHandler)
        //http.HandleFunc("/ungo",myHandler2 )
        // addr:监听的地址
        // handler:回调函数
        http.ListenAndServe("127.0.0.1:8000", nil)
    }
    
    // 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("www.5lmh.com"))
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    1.1.4 HTTP服务端

    package main
    
    import (
        "fmt"
        "io"
        "net/http"
    )
    
    func main() {
        //resp, _ := http.Get("http://www.baidu.com")
        //fmt.Println(resp)
        resp, _ := http.Get("http://127.0.0.1:8000/go")
        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(err)
                return
            } else {
                fmt.Println("读取完毕")
                res := string(buf[:n])
                fmt.Println(res)
                break
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
  • 相关阅读:
    windows server 2012搭建ftp站点服务器,新建ftp用户,设置ftp文件夹权限,通过ftp实现文件远程备份、异地备份
    关于项目采购管理,这些你需要知道
    新零售SaaS架构:中央库存系统架构设计
    k8s报错的解决办法: kubelet的日志出现 Error getting node的报错。
    Leetcode2760. 最长奇偶子数组
    C语言for循环高手小技巧
    Leetcode143. 重排链表
    C++ 基本的输入输出
    13. Spring AOP(一)思想及使用
    conan入门(二十八):解决conan 1.60.0下 arch64-linux-gnu交叉编译openssl/3.1.2报错问题
  • 原文地址:https://blog.csdn.net/qq_44139121/article/details/132763147
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号