日期:2014-05-18  浏览次数:22472 次

Socket问题,提示您的主机中的软件中止了一个已建立的连接
Hi,现在在做一个工具,用来邮件迁移的。协议采用的是IMAP4,通讯方面用Socket来实现,就是用Socket往旧的邮件系统发送IMAP指令,然后Socket客户端接收数据。再利用另外一个Socket客户端把接收的数据写入新的邮件服务器。现在问题来了,我测试的时候从老的邮件系统中读取15封带附件的邮件,每封大小为4M。读取一封、再往新邮件服务器写入一封,当读取到10封以后,就出错了,错误提示如下:
Connected host closed socket, read line terminated unexpectedly !
无法将数据写入传输连接: 您的主机中的软件中止了一个已建立的连接。。
无法将数据写入传输连接: 您的主机中的软件中止了一个已建立的连接。。
无法将数据写入传输连接: 您的主机中的软件中止了一个已建立的连接。。
无法将数据写入传输连接: 您的主机中的软件中止了一个已建立的连接。。
无法将数据写入传输连接: 您的主机中的软件中止了一个已建立的连接。。

但是如果我邮箱里面有9封邮件的话,就能迁移过去而不报错了


------解决方案--------------------
感觉第10封有异常,而后的程序应该处理上有没考虑清楚的地方才导致后5封都报“无法将数据写入传输连接: 您的主机中的软件中止了一个已建立的连接。。”这个错误。
------解决方案--------------------
同意楼上观点。
可采用以下方式推断问题所在:
1、直接发送第10封看有没有问题;
2、如果1没有问题,每次改为发送9封,停一段时间后再发9封,看有没有问题。