源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

GO语言实现简单TCP服务的方法

  • 时间:2021-05-10 11:25 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:GO语言实现简单TCP服务的方法
本文实例讲述了GO语言实现简单TCP服务的方法。分享给大家供大家参考。具体实现方法如下:
[u]复制代码[/u] 代码如下:
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语言程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部