package controller import ( "github.com/gin-gonic/gin" "log" "net" ) var clientTcpList = make(map[string]net.Conn) func NewTcpServer(tcpBaseServer string) { listener, err := net.Listen("tcp", tcpBaseServer) if err != nil { log.Println("Error listening", err.Error()) return //终止程序 } // 监听并接受来自客户端的连接 for { conn, err := listener.Accept() if err != nil { log.Println("Error accepting", err.Error()) return // 终止程序 } var remoteIpAddress = conn.RemoteAddr() clientTcpList[remoteIpAddress.String()] = conn log.Println(remoteIpAddress, clientTcpList) //clientTcpList=append(clientTcpList,conn) } } func PushServerTcp(str []byte) { for ip, conn := range clientTcpList { line := append(str, []byte("\r\n")...) _, err := conn.Write(line) log.Println(ip, err) if err != nil { conn.Close() delete(clientTcpList, ip) //clientTcpList=append(clientTcpList[:index],clientTcpList[index+1:]...) } } } func DeleteOnlineTcp(c *gin.Context) { ip := c.Query("ip") for ipkey, conn := range clientTcpList { if ip == ipkey { conn.Close() delete(clientTcpList, ip) } if ip == "all" { conn.Close() delete(clientTcpList, ipkey) } } c.JSON(200, gin.H{ "code": 200, "msg": "ok", }) }