golang中的并发服务器
生活随笔
收集整理的這篇文章主要介紹了
golang中的并发服务器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package mainimport ("net""fmt""time"
)func main() {// 組織一個 udp 地址結構, 指定服務器的IP+portsrvAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8006")if err != nil {fmt.Println("ResolveUDPAddr err:", err)return}fmt.Println("udp 服務器地址結構,創建完程!!!")// 創建用戶通信的 socketudpConn, err := net.ListenUDP("udp", srvAddr)if err != nil {fmt.Println("ListenUDP err:", err)return}defer udpConn.Close()fmt.Println("udp 服務器通信socket創建完成!!!")// 讀取客戶端發送的數據buf := make([]byte, 4096)for {// 返回3個值,分別是 讀取到的字節數, 客戶端的地址, errorn, cltAddr, err := udpConn.ReadFromUDP(buf) // --- 主go程讀取客戶端發送數據if err != nil {fmt.Println("ReadFromUDP err:", err)return}// 模擬處理數據fmt.Printf("服務器讀到 %v 的數據:%s\n", cltAddr, string(buf[:n]))go func() { // 每有一個客戶端連接上來,啟動一個go程 寫數據。// 提取系統當前時間daytime := time.Now().String() + "\n"// 回寫數據給客戶端_, err = udpConn.WriteToUDP([]byte(daytime), cltAddr)if err != nil {fmt.Println("WriteToUDP err:", err)return}}()}
}
?
總結
以上是生活随笔為你收集整理的golang中的并发服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: golang中的socket
- 下一篇: golang中的http服务器