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

2021-10-02 19:08:39 字數 1088 閱讀 9382

利用goroutine實現同時多個客戶端連線

將資料讀取放入單獨的方法中,利用goroutine執行

本文**檢視github:

要實現多個客戶端連線,需要將每個客戶端放入單獨的執行緒處理,通常我們使用多執行緒實現這個功能,但go語言提供的 goroutine, 可以非常方便的實現並行(goroutine並不是多執行緒)

將接收資料的相關**放入單獨的方法中:

func

handleclient

(conn net.conn)

//將bytes轉為字串

result :=

string

(buf[

0:n]

)//輸出結果

fmt.

println

("接收到資料:"

, result)

}}

在接收到新客戶端連線後,開啟乙個新的goroutine處理

使用方法:

go func()

for

//啟用goroutine處理

gohandleclient

(conn)

}

完整的**如下:

package main

import

("fmt"

"net"

)func

main()

//程式返回後關閉socket

defer tcplistener.

close()

for//啟用goroutine處理

gohandleclient

(conn)}}

func

handleclient

(conn net.conn)

//將bytes轉為字串

result :=

string

(buf[

0:n]

)//輸出結果

fmt.

println

("接收到資料:"

, result)

}}

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

第二步 迴圈讀取資料 利用for迴圈,等待客戶端傳送資料 本文 檢視github 修改上一步的 讓服務端迴圈接收客戶端傳送的訊息,主要使用for迴圈,直接上 package main import fmt net func main 程式返回後關閉socket defer tcplistener.c...

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 這裡準備乙...