国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Go語言網(wǎng)絡(luò)編程(socket編程)http編程

這篇具有很好參考價值的文章主要介紹了Go語言網(wǎng)絡(luò)編程(socket編程)http編程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1、http編程

1.1.1 web工作流程

Web服務(wù)器的工作原理可以簡單地歸納為
客戶機(jī)通過TCP/IP協(xié)議建立到服務(wù)器的TCP連接
客戶端向服務(wù)器發(fā)送HTTP協(xié)議請求包,請求服務(wù)器里的資源文檔
服務(wù)器向客戶機(jī)發(fā)送HTTP協(xié)議應(yīng)答包,如果請求的資源包含有動態(tài)語言的內(nèi)容,那么服務(wù)器會調(diào)用動態(tài)語言的解釋引擎負(fù)責(zé)處理“動態(tài)內(nèi)容”,并將處理得到的數(shù)據(jù)返回給客戶端
客戶機(jī)與服務(wù)器斷開。由客戶端解釋HTML文檔,在客戶端屏幕上渲染圖形結(jié)果

1.1.2. HTTP協(xié)議

超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,它詳細(xì)規(guī)定了瀏覽器和萬維網(wǎng)服務(wù)器之間互相通信的規(guī)則,通過因特網(wǎng)傳送萬維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議

HTTP協(xié)議通常承載于TCP協(xié)議之上文章來源地址http://www.zghlxwxcb.cn/news/detail-702416.html

1.1.3.HTTP服務(wù)端

package main

import (
    "fmt"
    "net/http"
)

func main() {
    //http://127.0.0.1:8000/go
    // 單獨(dú)寫回調(diào)函數(shù)
    http.HandleFunc("/go", myHandler)
    //http.HandleFunc("/ungo",myHandler2 )
    // addr:監(jiān)聽的地址
    // handler:回調(diào)函數(shù)
    http.ListenAndServe("127.0.0.1:8000", nil)
}

// handler函數(shù)
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)
    // 回復(fù)
    w.Write([]byte("www.5lmh.com"))
}

1.1.4 HTTP服務(wù)端

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 {
        // 接收服務(wù)端信息
        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
        }
    }
}

到了這里,關(guān)于Go語言網(wǎng)絡(luò)編程(socket編程)http編程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Go語言網(wǎng)絡(luò)編程:HTTP服務(wù)端之底層原理與源碼分析——http.HandleFunc()、http.ListenAndServe()

    Go語言網(wǎng)絡(luò)編程:HTTP服務(wù)端之底層原理與源碼分析——http.HandleFunc()、http.ListenAndServe()

    在 Golang只需要幾行代碼便能啟動一個 http 服務(wù),在上述代碼中,完成了兩件事: 調(diào)用 http.HandleFunc 方法,注冊了對應(yīng)于請求路徑 /ping 的 handler 函數(shù) 調(diào)用 http.ListenAndServe,啟動了一個端口為 8999 的 http 服務(wù) 2.1 server 結(jié)構(gòu) Addr :表示服務(wù)器監(jiān)聽的地址。如\\\":8080\\\"表示服務(wù)器在本地

    2024年02月08日
    瀏覽(96)
  • Go語言網(wǎng)絡(luò)編程入門:TCP、HTTP、JSON序列化、Gin、WebSocket、RPC、gRPC示例

    Go語言網(wǎng)絡(luò)編程入門:TCP、HTTP、JSON序列化、Gin、WebSocket、RPC、gRPC示例

    在本文中,我們將介紹Go語言中的網(wǎng)絡(luò)編程的不同方式,包括TCP、HTTP、Gin框架、WebSocket、RPC、gRPC的介紹與連接實例,并對所有示例代碼都給出了詳細(xì)的注釋,最后對每種模式進(jìn)行了總結(jié)。 TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,提供

    2024年02月16日
    瀏覽(28)
  • GO語言網(wǎng)絡(luò)編程(并發(fā)編程)Channel

    GO語言網(wǎng)絡(luò)編程(并發(fā)編程)Channel

    1.1.1 Channel 單純地將函數(shù)并發(fā)執(zhí)行是沒有意義的。函數(shù)與函數(shù)間需要交換數(shù)據(jù)才能體現(xiàn)并發(fā)執(zhí)行函數(shù)的意義。 雖然可以使用共享內(nèi)存進(jìn)行數(shù)據(jù)交換,但是共享內(nèi)存在不同的goroutine中容易發(fā)生競態(tài)問題。為了保證數(shù)據(jù)交換的正確性,必須使用互斥量對內(nèi)存進(jìn)行加鎖,這種做法勢

    2024年02月09日
    瀏覽(105)
  • GO語言網(wǎng)絡(luò)編程(并發(fā)編程)select

    1.1.1 select多路復(fù)用 在某些場景下我們需要同時從多個通道接收數(shù)據(jù)。通道在接收數(shù)據(jù)時,如果沒有數(shù)據(jù)可以接收將會發(fā)生阻塞。你也許會寫出如下代碼使用遍歷的方式來實現(xiàn): 這種方式雖然可以實現(xiàn)從多個通道接收值的需求,但是運(yùn)行性能會差很多。為了應(yīng)對這種場景,G

    2024年02月09日
    瀏覽(239)
  • GO語言網(wǎng)絡(luò)編程(并發(fā)編程)runtime包

    1.1.1. runtime.Gosched() 讓出CPU時間片,重新等待安排任務(wù)(大概意思就是本來計劃的好好的周末出去燒烤,但是你媽讓你去相親,兩種情況第一就是你相親速度非常快,見面就黃不耽誤你繼續(xù)燒烤,第二種情況就是你相親速度特別慢,見面就是你儂我儂的,耽誤了燒烤,但是還饞就

    2024年02月09日
    瀏覽(122)
  • GO語言網(wǎng)絡(luò)編程(并發(fā)編程)并發(fā)介紹,Goroutine

    GO語言網(wǎng)絡(luò)編程(并發(fā)編程)并發(fā)介紹,Goroutine

    進(jìn)程和線程 并發(fā)和并行 協(xié)程和線程 協(xié)程:獨(dú)立的??臻g,共享堆空間,調(diào)度由用戶自己控制,本質(zhì)上有點(diǎn)類似于用戶級線程,這些用戶級線程的調(diào)度也是自己實現(xiàn)的。 線程:一個線程上可以跑多個協(xié)程,協(xié)程是輕量級的線程。 goroutine 只是由官方實現(xiàn)的超級\\\"線程池\\\"。 每個

    2024年02月09日
    瀏覽(92)
  • Go語言網(wǎng)絡(luò)編程介紹以及案例運(yùn)用

    1. 基本概念 TCP 和 UDP : Go語言支持TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報協(xié)議)。TCP提供可靠的、面向連接的通信,而UDP提供無連接的快速數(shù)據(jù)傳輸。 并發(fā) : Go語言的并發(fā)模型是通過goroutines實現(xiàn)的。每個網(wǎng)絡(luò)請求都可以在自己的goroutine中處理,實現(xiàn)高效的并發(fā)。 Channels : 用于

    2024年01月25日
    瀏覽(105)
  • Go語言的網(wǎng)絡(luò)編程與TCP_IP

    Go語言是一種現(xiàn)代的編程語言,由Google的Robert Griesemer、Rob Pike和Ken Thompson在2009年開發(fā)。Go語言的設(shè)計目標(biāo)是簡單、高效、可擴(kuò)展和易于使用。它具有弱類型、垃圾回收、并發(fā)性和原生支持的網(wǎng)絡(luò)編程。Go語言的網(wǎng)絡(luò)編程是其強(qiáng)大功能之一,它使得開發(fā)者可以輕松地編寫高性能的

    2024年02月22日
    瀏覽(115)
  • Go語言實戰(zhàn):網(wǎng)絡(luò)編程與TCP_UDP

    Go語言是一種現(xiàn)代的編程語言,由Google的Robert Griesemer、Rob Pike和Ken Thompson于2009年開發(fā)。Go語言的設(shè)計目標(biāo)是簡單、高效、可擴(kuò)展和易于使用。它具有垃圾回收、類型安全、并發(fā)性能等優(yōu)點(diǎn)。Go語言的網(wǎng)絡(luò)編程庫 net 包提供了TCP/UDP的實現(xiàn),使得開發(fā)者可以輕松地編寫網(wǎng)絡(luò)應(yīng)用程序

    2024年02月21日
    瀏覽(96)
  • 【Go】五、網(wǎng)絡(luò)編程

    2.1、socket圖解 ?????????Socket是BSD UNIX進(jìn)程通信機(jī)制,通常也稱為“套接字”,用于描述IP地址和端口,是一個通信鏈的句柄。Socket可以理解為TCP/IP網(wǎng)絡(luò)API,程序猿可以用其來開發(fā)TCP/IP網(wǎng)絡(luò)上的應(yīng)用。電腦上運(yùn)行的應(yīng)用程序通常通過“套接字”向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答請求

    2024年02月03日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包