golang创建TCP服务器时间:2022-09-22    作者:panda    访问:1687

创建连接池、监听端口、接收消息、将消息发送给除自己外的所有人

package main

// 引入文件
import (
    "net"
    "fmt"
    "bufio"
    "encoding/hex"
    "strings"
)
// 创建TCP服务器最多允许10个连接
var conn [10]net.Conn
// var ci = 0
var tcpconn = false
func tcpserver(address string){
    lis,err := net.Listen("tcp",address)
    if err != nil {
        fmt.Println(err)
    }
    defer lis.Close()
    for{
        con,err := lis.Accept()
        if err != nil {
            // fmt.Println("lianjiecuowu")
        }
        for i:=0;i<10;i++{
            if conn[i]==nil{
                conn[i] = con
                fmt.Println(i)
                break
            }
        }
                go tcpmsg(con)
    }
}
//广播消息
func tcpsend(msg []byte, con net.Conn){
    for i:=0;i<10;i++{
        if conn[i]!=nil && conn[i]!=con{
            s,_ := conn[i].Write(msg)
            if s == 0 {
                conn[i] = nil
            }
        }
    }
}
//接收消息
func tcpmsg(con net.Conn){
    fmt.Println(con)
    reader := bufio.NewReader(con)
    for {
        msg,err := reader.ReadString('\n')
        if err != nil {
            fmt.Println(err)
            return
        }
        msg = strings.Replace(msg,"\n","",-1)
        tcpdata, _ :=hex.DecodeString(msg)
        tcpsend(tcpdata,con)
    }
    
}
func main(){
    fmt.Println("TCP服务运行中,请勿关闭此窗口")
    tcpserver(":3303")
}


最新作品

机电设备控制app开发

物料编码及进出库管理系统开发

微信扫码自助物品租赁系统开发

微信答题系统开发

嵌入式程序OTA升级平台开发

重庆乐乐环保官网开发

电动葫芦产品_厂家直销_重庆沪工集团_网站开发

黑马婚纱摄影网站优化案例

重庆婚纱摄影_【婚纱照排名前十】_黑马婚纱摄影工作室_网站开发

推广产品