濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Go語(yǔ)言服務(wù)器開(kāi)發(fā)之簡(jiǎn)易TCP客戶端與服務(wù)端實(shí)現(xiàn)方法

Go語(yǔ)言服務(wù)器開(kāi)發(fā)之簡(jiǎn)易TCP客戶端與服務(wù)端實(shí)現(xiàn)方法

熱門(mén)標(biāo)簽:工商信用卡外呼系統(tǒng)教程 經(jīng)常接到推銷(xiāo)電話機(jī)器人的電話 外呼系統(tǒng)如何接收服務(wù)密碼 旅游廁所如何電子地圖標(biāo)注 海外照相館地圖標(biāo)注入駐 客服級(jí)電銷(xiāo)機(jī)器人 智能營(yíng)銷(xiāo)軟件 外呼系統(tǒng)多少錢(qián)一年 滁州自建外呼系統(tǒng)

本文實(shí)例講述了Go語(yǔ)言服務(wù)器開(kāi)發(fā)之簡(jiǎn)易TCP客戶端與服務(wù)端實(shí)現(xiàn)方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

Go語(yǔ)言具備強(qiáng)大的服務(wù)器開(kāi)發(fā)支持,這里示范了最基礎(chǔ)的服務(wù)器開(kāi)發(fā):通過(guò)TCP協(xié)議實(shí)現(xiàn)客戶端與服務(wù)器的通訊。

一 服務(wù)端,為每個(gè)客戶端新開(kāi)一個(gè)goroutine

復(fù)制代碼 代碼如下:
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])) 
    } 
}

二 客戶端 連接服務(wù)器,并發(fā)送數(shù)據(jù)

復(fù)制代碼 代碼如下:
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不支持同時(shí)運(yùn)行多個(gè)程序,所以需要在終端通過(guò) go run 命令來(lái)同時(shí)運(yùn)行服務(wù)端和(一個(gè)或多個(gè))客戶端,可觀察到服務(wù)器對(duì)并發(fā)訪問(wèn)的支持。

希望本文所述對(duì)大家的Go語(yǔ)言程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • go語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的http客戶端抓取遠(yuǎn)程url的方法
  • go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單http服務(wù)的方法
  • Go語(yǔ)言的http/2服務(wù)器功能及客戶端使用
  • go語(yǔ)言實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的http文件服務(wù)器實(shí)例
  • go語(yǔ)言實(shí)現(xiàn)http服務(wù)端與客戶端的例子

標(biāo)簽:喀什 深圳 晉城 本溪 湘潭 楚雄 九江 運(yùn)城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go語(yǔ)言服務(wù)器開(kāi)發(fā)之簡(jiǎn)易TCP客戶端與服務(wù)端實(shí)現(xiàn)方法》,本文關(guān)鍵詞  語(yǔ)言,服務(wù)器,開(kāi),發(fā)之,簡(jiǎn)易,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Go語(yǔ)言服務(wù)器開(kāi)發(fā)之簡(jiǎn)易TCP客戶端與服務(wù)端實(shí)現(xiàn)方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Go語(yǔ)言服務(wù)器開(kāi)發(fā)之簡(jiǎn)易TCP客戶端與服務(wù)端實(shí)現(xiàn)方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    奇台县| 苗栗县| 江川县| 彭泽县| 尚义县| 桐梓县| 拉孜县| 桦甸市| 蒙城县| 讷河市| 广昌县| 屏山县| 昆山市| 宜宾市| 集安市| 宜昌市| 南投市| 张掖市| 锡林浩特市| 绥中县| 香港 | 门源| 合川市| 岱山县| 五寨县| 南川市| 庆云县| 白城市| 雅安市| 陇南市| 沅陵县| 大厂| 施甸县| 万源市| 商南县| 广州市| 新余市| 阿坝县| 丹棱县| 仲巴县| 江陵县|