使用DNS.GetHostAddresses,许多意想不到的域名都可以取得ip地址,比如:www.dfgdfg.com
socket.connect能连接到意想不到的端口,比如www.sina.com的9898端口,几乎找不到不能连接的端口。。。但是读出的数据长度为0,并且这种情况下读写超时失效,一直不停的读下去,这样给判断邮件主机、端口号是否有效增加了麻烦。使用读出的长度为0的次数判断是否有效,比如如果超过5次,就认为不是正确的smtp主机配置。
socket.connectted是上一次读写后的连接状态。
使用socket.poll可以判断socket的状态。事实证明,这个方法经常不准确。被微软晕死算了。
处理异步beginconnect,使用semaphore进行线程同步。