a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Golang > 正文

Go語言服務器開發之簡易TCP客戶端與服務端實現方法

2020-04-01 19:21:49
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Go語言服務器開發之簡易TCP客戶端與服務端實現方法,實例分析了基于Go語言實現的簡易服務器的TCP客戶端與服務器端實現技巧,需要的朋友可以參考下
 

本文實例講述了Go語言服務器開發之簡易TCP客戶端與服務端實現方法。分享給大家供大家參考。具體實現方法如下:

Go語言具備強大的服務器開發支持,這里示范了最基礎的服務器開發:通過TCP協議實現客戶端與服務器的通訊。

一 服務端,為每個客戶端新開一個goroutine

 

復制代碼代碼如下:
func ServerBase() {  
    fmt.Println("Starting the server...")  
    //create listener  
    listener, err := net.Listen("tcp", "192.168.1.27:50000")  
    if err != nil {  
        fmt.Println("Error listening:", err.Error())  
        return  
    }  
  
    // listen and accept connections from clients:  
    for {  
        conn, err := listener.Accept()  
        if err != nil {  
            fmt.Println("Error accepting:", err.Error())  
            return  
        }  
        //create a goroutine for each request.  
        go doServerStuff(conn)  
    }  
}  
  
func doServerStuff(conn net.Conn) {  
    fmt.Println("new connection:", conn.LocalAddr())  
    for {  
        buf := make([]byte, 1024)  
        length, err := conn.Read(buf)  
        if err != nil {  
            fmt.Println("Error reading:", err.Error())  
            return  
        }  
  
        fmt.Println("Receive data from client:", string(buf[:length]))  
    }  
}

 

二 客戶端 連接服務器,并發送數據

復制代碼代碼如下:
func ClientBase() {  
    //open connection:  
    conn, err := net.Dial("tcp", "192.168.1.27:50000")  
    if err != nil {  
        fmt.Println("Error dial:", err.Error())  
        return  
    }  
  
    inputReader := bufio.NewReader(os.Stdin)  
    fmt.Println("Please input your name:")  
    clientName, _ := inputReader.ReadString('/n')  
    inputClientName := strings.Trim(clientName, "/n")  
  
    //send info to server until Quit  
    for {  
        fmt.Println("What do you send to the server? Type Q to quit.")  
        content, _ := inputReader.ReadString('/n')  
        inputContent := strings.Trim(content, "/n")  
        if inputContent == "Q" {  
            return  
        }  
  
        _, err := conn.Write([]byte(inputClientName + " says " + inputContent))  
        if err != nil {  
            fmt.Println("Error Write:", err.Error())  
            return  
        }  
    }  
}

 

注:由于LiteIDE不支持同時運行多個程序,所以需要在終端通過 go run 命令來同時運行服務端和(一個或多個)客戶端,可觀察到服務器對并發訪問的支持。

希望本文所述對大家的Go語言程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲久久在线 | 欧美电影一区 | 日本成人一二三区 | 国产一区二区在线电影 | 久久久精品999 | 97超碰网 | 色婷婷综合五月天 | 亚洲日韩aⅴ在线视频 | 五月婷婷色 | 成人欧美一区二区三区黑人麻豆 | 免费毛片在线播放 | 日韩1区3区4区第一页 | 欧美亚洲另类在线 | 久久综合伊人 | www.日韩.com| 亚洲成人动漫在线观看 | 精品国语 | 91一区二区三区 | 中文字幕精品三级久久久 | 啪啪免费网站 | 伊人久久婷婷 | 国产a区 | 天天草夜夜草 | 欧美日性 | 久久国产精品无码网站 | 国产九九九| 成人在线视频免费观看 | www.国产精品.com| 国一级片 | 免费的av网站 | 欧美日韩成人在线播放 | 欧美一性一交 | 日韩精品在线观看视频 | 日本不卡一区 | 中文字幕日韩在线 | 免费观看黄色一级大片 | 国产一区二区 | 国产网站在线 | 亚洲精品中文字幕 | 2018狠狠干 | 91社区在线视频 |