2 Star 6 Fork 0

坚慧/gomasq

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
server.go 1.04 KB
一键复制 编辑 原始数据 按行查看 历史
kenshin 提交于 2013-07-23 19:10 . first commit
package main
import (
"github.com/miekg/dns"
"strconv"
"time"
)
type Server struct {
host string
port int
rTimeout time.Duration
wTimeout time.Duration
}
func (s *Server) Addr() string {
return s.host + ":" + strconv.Itoa(s.port)
}
func (s *Server) Run() {
Handler := NewHandler()
tcpHandler := dns.NewServeMux()
tcpHandler.HandleFunc(".", Handler.DoTCP)
udpHandler := dns.NewServeMux()
udpHandler.HandleFunc(".", Handler.DoUDP)
tcpServer := &dns.Server{Addr: s.Addr(),
Net: "tcp",
Handler: tcpHandler,
ReadTimeout: s.rTimeout,
WriteTimeout: s.wTimeout}
udpServer := &dns.Server{Addr: s.Addr(),
Net: "udp",
Handler: udpHandler,
UDPSize: 65535,
ReadTimeout: s.rTimeout,
WriteTimeout: s.wTimeout}
go s.start(udpServer)
go s.start(tcpServer)
}
func (s *Server) start(ds *dns.Server) {
logger.Printf("Start %s listener on %s\n", ds.Net, s.Addr())
err := ds.ListenAndServe()
if err != nil {
logger.Fatalf("Start %s listener on %s failed:%s", ds.Net, s.Addr(), err.Error())
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/jianhui/gomasq.git
git@gitee.com:jianhui/gomasq.git
jianhui
gomasq
gomasq
master

搜索帮助