@@ -204,6 +204,14 @@ public void InCompleted(SocketError socketError, int bytesTransferred)
204204 if ( m_options . TcpKeepalive != - 1 )
205205 {
206206 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
207215
208216 if ( m_options . TcpKeepaliveIdle != - 1 && m_options . TcpKeepaliveIntvl != - 1 )
209217 {
@@ -214,15 +222,11 @@ public void InCompleted(SocketError socketError, int bytesTransferred)
214222 bytes . PutInteger ( endian , m_options . TcpKeepalive , 0 ) ;
215223 bytes . PutInteger ( endian , m_options . TcpKeepaliveIdle , 4 ) ;
216224 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
221225
222- }
223- #endif
226+
224227 acceptedSocket . IOControl ( IOControlCode . KeepAliveValues , ( byte [ ] ) bytes , null ) ;
225228 }
229+ #endif
226230 }
227231
228232 // Create the engine object for this connection.
0 commit comments