golang网袜与超时的连接

时间:2018-09-15 11:40:43

标签: go

我尝试创建具有proxy / socks5支持的电子邮件发件人,我的问题是当我在70%的时间中使用代理时goroutine由于超时原因而停止工作,我的当前代码是:

func SmtpSendOne(server SmtpServer, data *MailData) error {

    var remote net.Conn
    var err error
    if server.ProxyAddr != "" {
        dialer, err := proxy.SOCKS5("tcp", server.ProxyAddr, &server.ProxyAuth, proxy.Direct)
        if err != nil {
            log.Println("Could not connect to proxy: ", err)
            return err
        }
        remote, err = dialer.Dial("tcp", server.Host+ ":" + server.Port)
        if err != nil {
            log.Println("Could not connect to server: ", err)
            return err
        }
    }

我尝试首先使用此解决方案来调用此函数:

    SmtpSendOne(try, delegate,  smtpSrv, true)
    select {
        case res := <-delegate:
                success <-res
        case <-time.After(smtpTimeout):
                success <-false
    }

但是此代码不能解决我的问题,我的goroutines在工作5分钟后就死了,例如日志https://ghostbin.com/paste/e87x5,我如何为socks5 connexion设置超时时间?在golang文档中找不到任何文档:(谢谢

0 个答案:

没有答案