@@ -204,6 +204,14 @@ public void InCompleted(SocketError socketError, int bytesTransferred)
204
204
if ( m_options . TcpKeepalive != - 1 )
205
205
{
206
206
acceptedSocket . SetSocketOption ( SocketOptionLevel . Socket , SocketOptionName . KeepAlive , m_options . TcpKeepalive ) ;
207
+ #if NET
208
+ if ( m_options . TcpKeepaliveIdle != - 1 )
209
+ acceptedSocket . SetSocketOption ( SocketOptionLevel . Tcp , SocketOptionName . TcpKeepAliveTime , m_options . TcpKeepaliveIdle / 1000 ) ;
210
+ if ( m_options . TcpKeepaliveIntvl != - 1 )
211
+ acceptedSocket . SetSocketOption ( SocketOptionLevel . Tcp , SocketOptionName . TcpKeepAliveInterval , m_options . TcpKeepaliveIntvl / 1000 ) ;
212
+ if ( m_options . TcpKeepaliveCnt != - 1 )
213
+ acceptedSocket . SetSocketOption ( SocketOptionLevel . Tcp , SocketOptionName . TcpKeepAliveRetryCount , m_options . TcpKeepaliveCnt ) ;
214
+ #else
207
215
208
216
if ( m_options . TcpKeepaliveIdle != - 1 && m_options . TcpKeepaliveIntvl != - 1 )
209
217
{
@@ -214,15 +222,11 @@ public void InCompleted(SocketError socketError, int bytesTransferred)
214
222
bytes . PutInteger ( endian , m_options . TcpKeepalive , 0 ) ;
215
223
bytes . PutInteger ( endian , m_options . TcpKeepaliveIdle , 4 ) ;
216
224
bytes . PutInteger ( endian , m_options . TcpKeepaliveIntvl , 8 ) ;
217
- #if NET
218
- if ( ! OperatingSystem . IsWindows ( ) )
219
- {
220
- throw new InvalidOperationException ( "Not supported on you platform" ) ; // There is a pull request for .net8.0
221
225
222
- }
223
- #endif
226
+
224
227
acceptedSocket . IOControl ( IOControlCode . KeepAliveValues , ( byte [ ] ) bytes , null ) ;
225
228
}
229
+ #endif
226
230
}
227
231
228
232
// Create the engine object for this connection.
0 commit comments