Go 網路程式設計

2021-10-05 22:02:02 字數 2657 閱讀 4329

網頁伺服器

訪問並讀取頁面

websocket

// ****** multi-thread/multi-core tcp server.

package main

import

("flag"

"fmt"

"net"

"syscall"

)const maxread =

25func

main()

hostandport := fmt.

sprintf

("%s:%s"

, flag.

arg(0)

, flag.

arg(1)

) listener :=

initserver

(hostandport)

for}

func

initserver

(hostandport string

) net.listener

func

connectionhandler

(conn net.conn)

}disconnect:

err := conn.

close()

println

("closed connection: "

, connfrom)

checkerror

(err,

"close: ")}

func

sayhello

(to net.conn)

wrote, err := to.

write

(obuf)

checkerror

(err,

"write: wrote "

+string

(wrote)

+" bytes.")}

func

handlemsg

(length int

, err error

, msg [

]byte

) fmt.

printf

("%c"

, msg[i])}

print

(">")}

}func

checkerror

(error

error

, info string

)}

package main

import

("bufio"

"fmt"

"net"

"os"

"strings"

)func

main()

inputreader := bufio.

newreader

(os.stdin)

fmt.

println

("first, what is your name?"

) clientname,

_:= inputreader.

readstring

('\n'

)// fmt.printf("clientname %s", clientname)

trimmedclient := strings.

trim

(clientname,

"\r\n"

)// windows 平台下用 "\r\n",linux平台下使用 "\n"

// 給伺服器傳送資訊直到程式退出:

)// http.request 描述了客戶端請求,內含乙個 url 字段。

// http.url 用於表示網頁位址,其中字串屬性 path 用於儲存 url 的路徑

// 傳送乙個簡單的 http.head() 請求檢視返回值resp,resp.status為狀態碼

func

testhead()

fmt.

println

(url,

": "

, resp.status)}}

// 使用 http.get() 獲取並顯示網頁內容; get 返回值中的 body 屬性包含了網頁內容,然後我們用 ioutil.readall 把它讀出來:

func

testget()

func

checkerror

(err error

)}

通俗易懂描述websocket

go網路程式設計 RPC程式設計

remote procedure call,遠端過程呼叫 而一旦踏入公司尤其是大型網際網路公司就會發現,公司的系統都由成千上萬大大小小的服務組成,各服務部署在不同的機器上,由不同的團隊負責。這時就會遇到兩個問題 1 要搭建乙個新服務,免不了需要依賴他人的服務,而現在他人的服務都在遠端,怎麼呼叫?2 ...

go網路程式設計 http程式設計

一 web工作流程 web伺服器的工作原理可以簡單歸納為 1.客戶端通過tcp ip協議與伺服器建立連線 2.客戶端向伺服器傳送http協議請求包,請求伺服器裡的文件資源 3.伺服器向客戶端傳送http協議應答包,如果請求的資源中包含動態語言的內容,那麼伺服器會呼叫動態語言的解釋引擎負責處理 動態內...

go語言網路程式設計

go語言的defer,你真的懂了嗎?這篇文章通過幾個生動的例子闡述了go語言當中return的執行順序和原理,也解答了為什麼defer明明執行在return之前,但是看起來卻是在return之後進行的 package main import net fmt func main else else e...