Go基礎知識 TCP UDP

2022-10-05 19:06:10 字數 1224 閱讀 5804

1.網路程式設計:物理層->資料鏈路層->網路層->傳輸層->應用層

2.socket是應用層與tcp/ip協議族通訊的中間軟體抽象層

3.tcp程式設計:net包裡面,並且粘包的問題需要注意

服務端處理流程:

1.監聽埠2.接收客戶端請求建立鏈結

3.建立goroutine處理鏈結

客戶端處理流程:

1.建立與服務端連線 2. 收發資料 3.關閉連線

案例:服務端:

func main()

defer listen.close()

fmt.println("listen success")

//接收客戶端請求建立連線 accept

forfmt.println("收到客戶端連線進來=",conn.remoteaddr().string())

//接收資料

go func(_conn net.conn)

data := string(buf[:n])

fmt.println("receive data=",data)

//給客戶端發一條

_conn.write(byte("已經收到這條訊息"))

}}(conn)}}

//使用tcp工具傳送

//結果如下:

listen success

收到客戶端連線進來= 127.0.0.1:55559

receive data= 你哈啊

read err: read tcp 127.0.0.1:4567->127.0.0.1:55559: wsarecv: an existing connection was forcibly closed by the remote host.

客戶端:

func main()

defer _conn.close()

//2. 收發資料 accept

for i:=0;i<10;i++

//接收服務端資料

var buf [128]byte

n,err := _conn.read(buf[:])

if err != nil

fmt.println("server msg=",string(buf[:n]))

}}

4.udp程式設計:換個函式

Go基礎知識

1.func main 是程式開始執行的函式。main函式是每乙個可執行程式所必須包含的,一般來說都是在啟動後第乙個執行的函式 如果有init 函式則會先執行該函式 2.當識別符號 包括敞亮 變數 型別 函式名 結構欄位等 以乙個大寫字母開頭,那麼使用這種形式的識別符號的物件就可以被外部包的 所使用...

go基礎知識學習

最近沒有繼續部署elk系統和學習,是因為有專案進來了,自己需要學多一門語言go,學學吧,多學無害,但最怕學藝不精,最怕樣樣都懂點,樣樣都不深 package main import fmt func main 每個go應用程式都包含乙個名為main的包,func main 時候程式開始執行的函式,如...

go語言基礎知識

go指標func main go 空指標 當乙個指標被定義後沒有分配到任何變數時,它的值為 nil。nil 指標也稱為空指標。nil在概念上和其它語言的null none nil null一樣,都指代零值或空值。乙個指標變數通常縮寫為 ptr。檢視以下例項 例項package main import...