创建连接池、监听端口、接收消息、将消息发送给除自己外的所有人
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")
}

渝公网安备 50024202000255号