• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Socet.resive

  • Автор темы Real-Mulik
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Real-Mulik

Есть проблема при программировании сокета. Когда по ошибке или из-за неправильной работы сервера программа зависает на функции Resive. т.е. клиент пытается получить пакет, а его на самом деле никто и не шлет, как сделать timeout? среди стандартных параметров я ничего похожего не нашел.
 
R

Real-Mulik

Нашел решение сам. В
Код:
Socket S = new Socket(IPEntry.AddressList[i].AddressFamily, SocketType.Stream, ProtocolType.Tcp);
S.Connect(IPEntry.AddressList[i], 110);
if (S.Connected)
{
Console.WriteLine("Connected!");
Soc775 = S;
Soc775.ReceiveTimeout = 100; //Устанавливаем timout
Console.WriteLine(this.recive(false));
this.send("Hello");
Console.WriteLine(this.recive(false));
Console.WriteLine(Soc775.ReceiveTimeout);
break;
}
 
M

mr_ST

проперть ReceiveTimeout Gets or sets a value that specifies the amount of time after which a synchronous Receive call will time out.

Или:

Код:
while(true)
{
if (socket.Available > 0)
{
socket.Receive(...);
// продолжаем формировать входящий пакет
}
Sleep(100);
if (слишком долго ждем формирования пакета)
сбросит пакет как ошибочный. 
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!