You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
928 B

package main
import (
"fmt"
"log"
"net"
"os"
"os/signal"
"runtime"
"syscall"
"time"
"github.com/gansidui/gotcp"
"github.com/gansidui/gotcp/examples/telnet"
)
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
// creates a tcp listener
tcpAddr, err := net.ResolveTCPAddr("tcp4", ":23")
checkError(err)
listener, err := net.ListenTCP("tcp", tcpAddr)
checkError(err)
// creates a server
config := &gotcp.Config{
PacketSendChanLimit: 20,
PacketReceiveChanLimit: 20,
}
srv := gotcp.NewServer(config, &telnet.TelnetCallback{}, &telnet.TelnetProtocol{})
// starts service
go srv.Start(listener, time.Second)
fmt.Println("listening:", listener.Addr())
// catchs system signal
chSig := make(chan os.Signal)
signal.Notify(chSig, syscall.SIGINT, syscall.SIGTERM)
fmt.Println("Signal: ", <-chSig)
// stops service
srv.Stop()
}
func checkError(err error) {
if err != nil {
log.Fatal(err)
}
}