最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

GO語言實現(xiàn)簡單TCP服務的方法

 更新時間:2015年03月03日 09:36:43   作者:小小的我  
這篇文章主要介紹了GO語言實現(xiàn)簡單TCP服務的方法,實例分析了Go語言實現(xiàn)TCP服務的技巧,需要的朋友可以參考下

本文實例講述了GO語言實現(xiàn)簡單TCP服務的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

復制代碼 代碼如下:

package main
import (
"net"
"fmt"
)
var (   maxRead = 1100
    msgStop   = []byte("cmdStop")
    msgStart  = []byte("cmdContinue")
    )
func main() {
 
    hostAndPort := "localhost:54321"
    listener := initServer(hostAndPort)
    for {
        conn, err := listener.Accept()
        checkError(err, "Accept: ")
        go connectionHandler(conn)
    }
}
func initServer(hostAndPort string) *net.TCPListener {
    serverAddr, err := net.ResolveTCPAddr("tcp", hostAndPort)
    checkError(err, "Resolving address:port failed: '" + hostAndPort + "'")
    listener, err := net.ListenTCP("tcp", serverAddr)
    checkError(err, "ListenTCP: ")
    println("Listening to: ", listener.Addr().String())
    return listener
}
func connectionHandler(conn net.Conn) {
    connFrom := conn.RemoteAddr().String()
    println("Connection from: ", connFrom)
    talktoclients(conn)
    for {
        var ibuf []byte = make([]byte, maxRead + 1)
        length, err := conn.Read(ibuf[0:maxRead])
        ibuf[maxRead] = 0 // to prevent overflow
    switch err {
    case nil:
        handleMsg(length, err, ibuf)
    default:
        goto DISCONNECT
    }
    }
    DISCONNECT:
    err := conn.Close()
    println("Closed connection:" , connFrom)
    checkError(err, "Close:" )
    }
func talktoclients(to net.Conn) {
    wrote, err := to.Write(msgStart)
    checkError(err, "Write: wrote " + string(wrote) + " bytes.")
}
func handleMsg(length int, err error, msg []byte) {
    if length > 0 {
        
        for i := 0; ; i++ {
            if msg[i] == 0 {
                break
            }
        }
        fmt.Printf("Received data: %v", string(msg[0:length]))
        fmt.Println("   length:",length)
    }
}
func checkError(error error, info string) {
    if error != nil {
panic("ERROR: " + info + " " + error.Error()) // terminate program
}
}

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

相關(guān)文章

  • Golang中context包使用場景和示例詳解

    Golang中context包使用場景和示例詳解

    這篇文章結(jié)合示例代碼介紹了context包的幾種使用場景,文中有詳細的代碼示例,對學習或工作有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • Go?interface{}?轉(zhuǎn)切片類型的實現(xiàn)方法

    Go?interface{}?轉(zhuǎn)切片類型的實現(xiàn)方法

    本文主要介紹了Go?interface{}?轉(zhuǎn)切片類型的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳解Golang如何優(yōu)雅判斷interface是否為nil

    詳解Golang如何優(yōu)雅判斷interface是否為nil

    這篇文章主要為大家詳細介紹了Golang如何優(yōu)雅判斷interface是否為nil的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解下
    2024-01-01
  • Go?代碼塊作用域變量遮蔽問題解析

    Go?代碼塊作用域變量遮蔽問題解析

    這篇文章主要為大家介紹了Go?代碼塊作用域變量遮蔽問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Golang跨平臺GUI框架Fyne的使用教程詳解

    Golang跨平臺GUI框架Fyne的使用教程詳解

    Go 官方?jīng)]有提供標準的 GUI 框架,在 Go 實現(xiàn)的幾個 GUI 庫中,Fyne 算是最出色的,它有著簡潔的API、支持跨平臺能力,且高度可擴展,下面我們就來看看它的具體使用吧
    2024-03-03
  • Gin框架中異步任務的實現(xiàn)

    Gin框架中異步任務的實現(xiàn)

    Gin框架中的異步任務處理是指在Web應用中以非阻塞的方式處理耗時操作或后臺任務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-11-11
  • golang解析html網(wǎng)頁的方法

    golang解析html網(wǎng)頁的方法

    今天小編就為大家分享一篇golang解析html網(wǎng)頁的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Go語言如何獲取goroutine的id

    Go語言如何獲取goroutine的id

    在Go語言中,獲取?goroutine的id并不像其他編程語言那樣容易,但依然有辦法,這篇文章就來和大家聊聊具體實現(xiàn)的方法,感興趣的小伙伴可以了解下
    2024-12-12
  • Go實踐反向代理ReverseProxy解析

    Go實踐反向代理ReverseProxy解析

    這篇文章主要為大家介紹了Go實踐反向代理示例ReverseProxy解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 淺析Golang中調(diào)度器的關(guān)鍵機制與性能

    淺析Golang中調(diào)度器的關(guān)鍵機制與性能

    Golang的調(diào)度器是其并發(fā)模型的核心組件,負責管理Goroutine的調(diào)度和執(zhí)行,本文將從理論和代碼層面分析Golang調(diào)度器的關(guān)鍵機制,感興趣的可以了解下
    2025-03-03

最新評論

鄂托克前旗| 黎平县| 晋宁县| 永善县| 巴里| 河池市| 开阳县| 多伦县| 蕲春县| 三门县| 阳信县| 晋宁县| 光山县| 虎林市| 乾安县| 包头市| 禄劝| 洪雅县| 竹山县| 忻州市| 西安市| 汉阴县| 鄂州市| 固阳县| 台前县| 镇坪县| 连云港市| 军事| 株洲县| 柞水县| 微博| 安徽省| 荔波县| 华亭县| 醴陵市| 望谟县| 文化| 光山县| 来凤县| 自贡市| 儋州市|