Không có cách trực tiếp để đạt được nó, nhưng một cách để làm điều đó có thể là có một phương pháp riêng biệt mà sẽ kiểm tra kết nối.
static bool TestConnection(string ipAddress, int Port, TimeSpan waitTimeSpan)
{
using (TcpClient tcpClient = new TcpClient())
{
IAsyncResult result = tcpClient.BeginConnect(ipAddress, Port, null, null);
WaitHandle timeoutHandler = result.AsyncWaitHandle;
try
{
if (!result.AsyncWaitHandle.WaitOne(waitTimeSpan, false))
{
tcpClient.Close();
return false;
}
tcpClient.EndConnect(result);
}
catch (Exception ex)
{
return false;
}
finally
{
timeoutHandler.Close();
}
return true;
}
}
Phương pháp này sẽ sử dụng một WaitHandle rằng sẽ chờ đợi trong khoảng thời gian quy định để có được kết nối thành lập, nếu nó được kết nối trong thời gian, nó sẽ đóng kết nối và trở thành sự thật, nếu không, nó sẽ timeout và trở lại sai.
Nguồn
2011-01-03 12:42:52
[Nó có vẻ như không có cách nào tốt để làm điều đó.] (Http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/2281199d-cd28-4b5c-95dc -5a888a6da30d /) –
Không thể. Thời gian chờ chỉ có thể được điều chỉnh cho các hoạt động gửi. Đó là ofcourse có thể thực hiện cơ chế thời gian chờ của riêng bạn nhưng bạn không thể đạt được giá trị thời gian chờ lâu hơn. – Mervin