42 lines
620 B
Go
42 lines
620 B
Go
package tcp
|
|
|
|
import (
|
|
"net"
|
|
|
|
"github.com/ginuerzh/gost"
|
|
"github.com/ginuerzh/gost/server"
|
|
)
|
|
|
|
type nodeServer struct {
|
|
options *server.Server
|
|
}
|
|
|
|
func (s *nodeServer) Init(opts ...server.Option) {
|
|
for _, opt := range opts {
|
|
opt(s.options)
|
|
}
|
|
}
|
|
|
|
func (s *nodeServer) Options() *server.Options {
|
|
return s.options
|
|
}
|
|
|
|
func (s *nodeServer) Run() error {
|
|
ln, err := net.Listen("tcp", s.options.Addr)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer ln.Close()
|
|
|
|
for {
|
|
conn, err := ln.Accept()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
go func(c net.Conn) {
|
|
defer c.Close()
|
|
gost.DefaultHandler(s).Handle(conn)
|
|
}(conn)
|
|
}
|
|
}
|