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

首頁 > 編程 > Golang > 正文

GO語言實現簡單TCP服務的方法

2020-04-01 19:17:32
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了GO語言實現簡單TCP服務的方法,實例分析了Go語言實現TCP服務的技巧,需要的朋友可以參考下
 

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

 

復制代碼代碼如下:

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語言程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久窝 | 99国产精品一区 | 国产成人免费在线观看视频 | 日本在线一区二区 | 日韩大片免费看 | 精品国产一区二区三区久久久蜜月 | www一区| 精品一区视频 | 四虎8848精品成人免费网站 | 日韩欧美一区二区视频 | 国产精品久久久久久久久久久免费看 | 欧美高清成人 | 国产三级在线播放 | 色噜噜狠狠狠综合曰曰曰88av | 亚洲成人网络 | 国产精品自产av一区二区三区 | 成人黄色免费看 | 日韩欧美高清视频 | 精品国产污网站污在线观看15 | 在线观看免费毛片视频 | 久久91久久久久麻豆精品 | 性色视频免费观看 | 本道综合精品 | 国产精品一区二区日韩新区 | 伊人精品视频在线观看 | 亚洲一区二区三区四区五区中文 | 成人欧美一区二区三区1314 | 亚洲视频一区 | 国产成人精品免高潮在线观看 | 久久国内精品 | 免费av手机在线观看 | 4hu在线| 天天干天天躁 | 日日天天| 羞羞视频免费网站 | 久久久精品高清 | 色综合色综合 | 亚洲精品www久久久久久广东 | 二区在线视频 | 欧美日韩成人在线视频 | 伊人欧美在线 |