Go實現簡單的Socket服務端筆記 二

2021-10-02 19:08:39 字數 1055 閱讀 9940

第二步 迴圈讀取資料

利用for迴圈,等待客戶端傳送資料

本文**檢視github:

修改上一步的**,讓服務端迴圈接收客戶端傳送的訊息,主要使用for迴圈,直接上**

package main

import

("fmt"

"net"

)func

main()

//程式返回後關閉socket

defer tcplistener.

close()

fmt.

println

("等待客戶連線..."

)//開始接收連線

conn, err := tcplistener.

accept()

if err !=

nil//獲取連線位址

remoteaddr := conn.

remoteaddr()

fmt.

println

(, remoteaddr)

//定義乙個資料接收buffer

var buf [

1024

]byte

for//將bytes轉為字串

result :=

string

(buf[

0:n]

)//輸出結果

fmt.

println

("接收到資料:"

, result)

}}

上面的**和第一步幾乎一樣,只是在最後接收用for套起來,實現迴圈接收

//定義乙個資料接收buffer

var buf [

1024

]byte

for//將bytes轉為字串

result :=

string

(buf[

0:n]

)//輸出結果

fmt.

println

("接收到資料:"

, result)

}

Go實現簡單的Socket服務端筆記 三

利用goroutine實現同時多個客戶端連線 將資料讀取放入單獨的方法中,利用goroutine執行 本文 檢視github 要實現多個客戶端連線,需要將每個客戶端放入單獨的執行緒處理,通常我們使用多執行緒實現這個功能,但go語言提供的 goroutine,可以非常方便的實現並行 goroutine...

Go實現簡單的Socket服務端筆記 八

session中read方法實現粘包拆包處理 定義簡單協議,資料報頭由4位元組構成 第1位固定為 第2 3位為body長度 uint16 第4位固定為 接收資料時若第1位和第4位不正確則認為接收到異常資料,同時關閉socket連線 本文 檢視github 為了實現粘包拆包處理,我們自己實現乙個buf...

用go實現簡單的socket通訊

服務端 package main import fmt net func process conn net.conn 3.顯示客戶端傳送的內容到伺服器終端 fmt.println string buf n func main defer listen.close 延時關閉 forelse 這裡準備乙...