Вам не нужно использовать класс MailAddress.
Вы можете позволить среде выполнения проанализировать вашу строку.
var message = new MailMessage(
"My Name my@name.com",
"Recipient One recipient@one.com,Recipient Two recipient@two.com",
"Subject",
"Body");
The easiest is to setup an alarm
and have connect
be interrupted with a signal (see UNP 14.2):
signal( SIGALRM, connect_alarm ); /* connect_alarm is you signal handler */
alarm( secs ); /* secs is your timeout in seconds */
if ( connect( fs, addr, addrlen ) < 0 )
{
if ( errno == EINTR ) /* timeout */
...
}
alarm( 0 ); /* cancel alarm */
Though using select
is not much harder :)
You might want to learn about raw sockets too.
Если вы твердо настроены использовать блокирующий ввод-вывод для выполнения этой задачи, вам следует изучить вызов setsockopt (), в частности флаг SO_SNDTIMEO (или другие флаги, в зависимости от вашей ОС).
Предупреждаем, что эти флаги не являются надежными / переносимыми и могут быть реализованы по-разному на разных платформах или в разных версиях данной платформы.
Традиционный / лучший способ сделать это - использовать неблокирующий подход, который использует select (). Если вы новичок в сокетах, одна из лучших книг - TCP / IP Illustrated, Volume 1: The Protocols. Это на Amazon по адресу: http://www.amazon.com/TCP-Illustrated-Protocols-Addison-Wesley-Professional/dp/0201633469
RudeSocket Решила проблему
Я нашел файл lib, который протестирован в Linux Fedora (не Конечно, насчет Windows), что дает мне возможность тайм-аута. Ниже вы можете найти очень простой пример.
#include <rude/socket.h>
#include <iostream>
using namespace std;
using namespace rude;
Socket soc;
soc.setTimeout(30, 5);
//Try connecting
if (soc.connect("xxx.xxx.xxx.xxx", 80)){
cout << "Connected to xxx.xxx.xxx.xxx on Port " << 80 << "\n";
}
//connections Failed
else{
cout << "Timeout to xxx.xxx.xxx.xxx on Port " << 80 << "\n";
}
soc.close();
Вот ссылка на DevSite