专栏首页陶士涵的菜地[Go] 测试go连接imap的tcp长连接

[Go] 测试go连接imap的tcp长连接

连接上imap服务后,什么都不操作,我测试大约5分钟会被服务端断掉,测试代码如下

    imapClient, _ := client.Dial("imap.sina.net:143")
    for {
        time.Sleep(time.Second * 1)
    }

为了保持住这条连接,每隔10秒列取一下邮件夹列表,这样就可以一直保持住连接了。开三个窗口,一个窗口不停的netstat查看tcp连接情况,一个窗口运行代码,一个窗口打开tcpdump监听端口查看数据请求

while true;do clear;date;netstat -altupn|grep 143;sleep 1;done

tcpdump -i enp0s25 port 143 -vv

可以看到每隔10秒会有数据传输

完整测试代码

package main

import (
    "fmt"
    "time"

    "github.com/emersion/go-imap"
    "github.com/emersion/go-imap/client"
)

func main() {
    imapClient, _ := client.Dial("imap.sina.net:143")
    err := imapClient.Login("shihan2@sopans.com", "密码")
    fmt.Println(err)
    for {
        time.Sleep(time.Second * 10)
        mailboxes := make(chan *imap.MailboxInfo, 20)
        go func() {
            imapClient.List("", "*", mailboxes)
        }()
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [日常] git版本回退

    先克隆一个空的测试仓库,这是我自己在gitlab里创建的空仓库 git clone http://192.168.1.114:8090/admintsh/blo...

    陶士涵
  • [android]android下apk的安装过程

    /********************2016年4月23日更新********************************/

    陶士涵
  • [Go] 并发imap收信

    陶士涵
  • spring boot连接mysql提示The server time zone value xxx错误

    在使用spring boot +Mysql组合的时候。遇到了连接数据库错误。信息:The server time zone value xxx

    凯哥Java
  • 记录SpringCloud使用的一些问题

    一、服务下线延迟问题 这个虽然是为了更好的高可用,但是下线服务依然存留很长一段时间(默认下最长有2分钟),不利于集群环境部署。 解决办法: 去除保护机制,修改默...

    叔叔
  • ubuntu16.04 配置Hyperledger Fabric1.4.4环境

    接下来一段时间要学习区块链相关内容,一系列文章,一方面作为笔记,另一方面方便交流学习。

    红桃K
  • vue防止按钮在短时间内被多次点击的方法

    莫问今朝
  • Java基础:一、抽象过程 (1)

    人们通过计算机所能够解决的问题的复杂性取决于抽象的类型质量。所谓的“类型”是指“所抽象的是什么?” 举个例子: 汇编语言是对底层机器的轻微抽象; 命令式语...

    桑鱼
  • SQL Server数据库获取TEXT字段的内容长度的方法

    SQL Server数据库如何获取TEXT字段的内容长度呢?本文我们就来介绍一下SQL Server数据库如何获取TEXT字段的内容长度的方法,是通过DATA...

    跟着阿笨一起玩NET
  • 如何使用Git(三)

    北溟有鱼QAQ

扫码关注云+社区

领取腾讯云代金券