Есть ли причина, по которой Сокет должен закрываться сам по себе через 2 часа?Я получаю данные каждую секунду из этого сокета и каждые 30 с записываю некоторые крошечные данные «keep-alive».
Перед отправкой я проверяю, подключен ли сокет, используя следующий метод:
public bool IsSocketReadyForWriting(Socket s)
{
try
{
if (!s.Connected)
{
Log.Info("Socket.Connected was false");
return false;
}
// following line will throw if socket disconnected
bool poll = s.Poll(2000, SelectMode.SelectWrite);
if (!poll)
{
try
{
// if poll is false, socket is closed
Log.Info("poll is false");
this.Close();
}
catch { }
return false;
}
Log.Debug("still connected");
return true;
}
catch (Exception ex)
{
Log.Error("Error while checking if socket connected", ex);
return false;
}
}
Все работает нормально около 2 часов, затем внезапно Socket.Poll возвращает false, и Socket закрывается.
Есть ли настройка, которая контролирует это, или я действительно что-то делаю неправильно?
[Редактировать]
Забыл упомянуть: я контролирую и серверную и клиентскую часть ссылки.Это оба приложения на C #, одно из которых создает сокет прослушивания, другое открывает соединение и отправляет данные.Они общаются без проблем в течение 2 часов (без утечек памяти и прочего), затем сокет закрывается.
Когда это происходит, я легко могу снова подключить розетку, но я просто брожу, если кто-нибудь знает, почему это может быть причиной.