目录
摘要:
核心函数:
创建监听listen:
等待新连接accept:
读取数据并处理:
摘要:
记录使用go快速创建tcp服务器
核心函数:
创建监听listen:
func (s *Service) ProxyServiceOpen() error {
s.Logger.Info("Open ProxyServiceOpen ready")
bindAddress := g_localIp + ":" + g_proxyPort
ln, err := net.Listen("tcp", bindAddress)
if err != nil {
s.Logger.Error(fmt.Sprintf("Open Server net.Listen fail, err = %v", err))
return fmt.Errorf("ProxyServiceOpen listen fail, err = %v", err)
}
s.Listener = ln
go s.ProxyServiceServe()
s.Logger.Info(fmt.Sprintf("ProxyServiceOpen net.Listen ok, proxyAddr = %s", bindAddress))
return nil
}
等待新连接accept:
func (s *Service) ProxyServiceServe() {
for {
conn, err := s.Listener.Accept()
if err, ok := err.(interface {
Temporary() bool
}); ok && err.Temporary() {
continue
}
if nil != err {
s.Logger.Error(fmt.Sprintf("ProxyServiceServe fail, Listener.Accept = %v", err))
continue
}
go s.ProxyServiceHandle(conn)
}
}



