1 Star 1 Fork 1

robert/go-server

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
server.go 1.66 KB
一键复制 编辑 原始数据 按行查看 历史
robert 提交于 2021-05-31 12:35 +08:00 . edit
package server
import (
"fmt"
"net"
"reflect"
"gitee.com/ksbb/go-server/util"
)
type Handler func()
type Register struct {
}
type Server interface {
Conn()
}
type Opt map[string]Handler
var s Server
var defaultServer Server
func NewServer(ip string, port int, sType ...string) {
if len(sType) != 0 && sType[0] == "UDP" {
defaultServer = newUdpServer(ip, port)
}
defaultServer = newTcpServer(ip, port)
fmt.Println(defaultServer)
}
//默认的服务器
func GetServer() Server {
return defaultServer
}
//开始服务器
func Start() {
//反射调用
v := reflect.ValueOf(defaultServer)
v.MethodByName("Conn").Call(nil)
}
func On(event string, f Handler) {
s = GetServer()
util.RegisterOpts(event, f)
}
//发送到用户台
func ToConsole(str string) {
fmt.Println(str)
}
//发送到客户端
func Send(str string) {
v := reflect.ValueOf(defaultServer)
conn := v.Elem().FieldByName("Conns").Interface().([]net.Conn)
//fmt.Println(conn)
////获取最新那条连接
c := conn[len(conn)-1]
v.MethodByName("Send").Call([]reflect.Value{
reflect.ValueOf(c),
reflect.ValueOf(str),
})
}
func SendUdp(str string) {
fmt.Println(defaultServer)
v := reflect.ValueOf(defaultServer)
//t := v.Elem().FieldByName("Conns").Type().String()
//t2 := v.Elem().FieldByName("Add").Type().String()
//fmt.Println(v)
//fmt.Println(t, t2)
//conn := v.Elem().FieldByName("Conns").Interface().(*net.UDPConn)
conn := v.Elem().FieldByName("Conns").Interface().([]net.Conn)
addr := v.Elem().FieldByName("Add").Interface().(*net.UDPAddr)
//fmt.Println(conn)
v.MethodByName("Send").Call([]reflect.Value{
reflect.ValueOf(conn),
reflect.ValueOf(addr),
reflect.ValueOf(str),
})
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/ksbb/go-server.git
git@gitee.com:ksbb/go-server.git
ksbb
go-server
go-server
ad160b019726

搜索帮助