华域联盟 Golang 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语言程序设计有所帮助。

本文由 华域联盟 原创撰写:华域联盟 » GO语言实现简单TCP服务的方法

转载请保留出处和原文链接:https://www.cnhackhy.com/109995.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们