Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, timeout);
Если для тайм-аута задано значение -1, метод отлично работает в Windows, но не работает в Linux и Mac со следующим исключением
System.Net.Sockets.SocketException (22): Недопустимый аргумент в System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException (ошибка SocketError, String callerName) в System.Net.Sockets.Socket.SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName параметр-имя-типа, имя-узла-имя-типа, имя-узла-имя-узла, имя_сокет_четкого типа, имя_сокет_четкого типа, имя_сокета_сокета).Socket.SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue)
Если для mac и linux установлено значение 0, то нет никаких исключений.
1), если время ожидания равнопри значении -1 он выполняет неопределенный опрос окон.Будет ли timeout = 0 делать то же самое в Windows?
2) ON linux, если для тайм-аута установлено значение 0?Делает ли это неопределенный опрос?
Когда я использую 0 для тайм-аута, приложение периодически завершается ошибкой с
System.NotSupportedException: The BeginWrite method cannot be called >when another write operation is pending.
at System.Net.Security._SslStream.ProcessWrite(Byte[] buffer, >Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security._SslStream.BeginWrite(Byte[] buffer, Int32 >offset, Int32 count, AsyncCallback asyncCallback, Object asyncState)