Socet.resive

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

Real-Mulik

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

Real-Mulik

#2
Нашел решение сам. В
Код:
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

#3
проперть 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 (слишком долго ждем формирования пакета)
сбросит пакет как ошибочный. 
}
 
Статус
Закрыто для дальнейших ответов.