[C#] TCP/IP 서버에서 트래픽 분리 테스트
연결 해제는 다음과 같은 경우입니다.
클라이언트 연결 끊기
고객이 shutdown
를 실행하고 회선을 끊을 때 서버의 네트워크 Stream.읽기 () 수신 길이가 0인 통신을 받고 종료합니다.
normal_end int readsize = stream.Read( buf, 0, buf.Length );
if( readsize == 0 )
{
// クライアントが切断したときの処理
}
클라이언트가 강제 종료됨
클라이언트가 WSACleanup
회선을 실행하거나 ExitProcess
회선을 닫을 때 서버의 네트워크 Stream.Read() 투구는 예외적으로 종료됩니다.
forced_end try
{
int readsize = stream.Read( buf, 0, buf.Length );
// クライアントからの受信処理
}
catch( Exception e )
{
// クライアントが切断したときの処理
}
케이블이 빠지는 등 통신 경로가 끊기다
보통 반응이 없다.
Keep-alive를 미리 설정하면 설정 조건이 될 때 강제 종료 때와 같이 네트워크 스트림이 됩니다.Read() 투구는 예외적으로 종료됩니다.
keep-alive란 연결된 상대방에게 정기적으로 투사 응답이 있는지 확인하고 응답이 없으면 선로에 이상이 생기는 방법을 측정하는 것이다.
프로브의 ON/OFF, 고객과의 통신에서 탐지 발송까지의 대기 시간, 탐지 발송의 간격을 설정합니다.
keep-alive_setting var clientSocket = listenerSocket.Accept();
// keep-aliveをenableに設定
clientSocket.SetSocketOption( SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true );
// keep-aliveのパラメータ Cで言うところの、unsigned int が3つです。
byte[] tcp_keepalive = new byte[12];
BitConverter.GetBytes( (Int32)1 ).CopyTo( tcp_keepalive, 0 );//onoffスイッチ.
BitConverter.GetBytes( (Int32)2000 ).CopyTo( tcp_keepalive, 4 );//wait time.(ms)
BitConverter.GetBytes( (Int32)1000 ).CopyTo( tcp_keepalive, 8 );//interval.(ms)
// keep-aliveのパラメータ設定
clientSocket.IOControl( IOControlCode.KeepAliveValues, tcp_keepalive, null );
대기 시간과 간격은 밀리초로 계산됩니다.
이 예에서 스위치는 ON, 대기 시간 2초, 간격 1초입니다.Windows에서 10회 연속 탐지 응답이 없으면 예외가 발생합니다.
탐측이 네트워크 유량을 증가시켰다.이 점은 주의해야 한다.
참조 링크
https://www.codeproject.com/Articles/117557/Set-Keep-Alive-Values
Reference
이 문제에 관하여([C#] TCP/IP 서버에서 트래픽 분리 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kurasho/items/275612d408d32923eabd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
int readsize = stream.Read( buf, 0, buf.Length );
if( readsize == 0 )
{
// クライアントが切断したときの処理
}
클라이언트가
WSACleanup
회선을 실행하거나 ExitProcess
회선을 닫을 때 서버의 네트워크 Stream.Read() 투구는 예외적으로 종료됩니다.forced_end
try
{
int readsize = stream.Read( buf, 0, buf.Length );
// クライアントからの受信処理
}
catch( Exception e )
{
// クライアントが切断したときの処理
}
케이블이 빠지는 등 통신 경로가 끊기다
보통 반응이 없다.
Keep-alive를 미리 설정하면 설정 조건이 될 때 강제 종료 때와 같이 네트워크 스트림이 됩니다.Read() 투구는 예외적으로 종료됩니다.
keep-alive란 연결된 상대방에게 정기적으로 투사 응답이 있는지 확인하고 응답이 없으면 선로에 이상이 생기는 방법을 측정하는 것이다.
프로브의 ON/OFF, 고객과의 통신에서 탐지 발송까지의 대기 시간, 탐지 발송의 간격을 설정합니다.
keep-alive_setting var clientSocket = listenerSocket.Accept();
// keep-aliveをenableに設定
clientSocket.SetSocketOption( SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true );
// keep-aliveのパラメータ Cで言うところの、unsigned int が3つです。
byte[] tcp_keepalive = new byte[12];
BitConverter.GetBytes( (Int32)1 ).CopyTo( tcp_keepalive, 0 );//onoffスイッチ.
BitConverter.GetBytes( (Int32)2000 ).CopyTo( tcp_keepalive, 4 );//wait time.(ms)
BitConverter.GetBytes( (Int32)1000 ).CopyTo( tcp_keepalive, 8 );//interval.(ms)
// keep-aliveのパラメータ設定
clientSocket.IOControl( IOControlCode.KeepAliveValues, tcp_keepalive, null );
대기 시간과 간격은 밀리초로 계산됩니다.
이 예에서 스위치는 ON, 대기 시간 2초, 간격 1초입니다.Windows에서 10회 연속 탐지 응답이 없으면 예외가 발생합니다.
탐측이 네트워크 유량을 증가시켰다.이 점은 주의해야 한다.
참조 링크
https://www.codeproject.com/Articles/117557/Set-Keep-Alive-Values
Reference
이 문제에 관하여([C#] TCP/IP 서버에서 트래픽 분리 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kurasho/items/275612d408d32923eabd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var clientSocket = listenerSocket.Accept();
// keep-aliveをenableに設定
clientSocket.SetSocketOption( SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true );
// keep-aliveのパラメータ Cで言うところの、unsigned int が3つです。
byte[] tcp_keepalive = new byte[12];
BitConverter.GetBytes( (Int32)1 ).CopyTo( tcp_keepalive, 0 );//onoffスイッチ.
BitConverter.GetBytes( (Int32)2000 ).CopyTo( tcp_keepalive, 4 );//wait time.(ms)
BitConverter.GetBytes( (Int32)1000 ).CopyTo( tcp_keepalive, 8 );//interval.(ms)
// keep-aliveのパラメータ設定
clientSocket.IOControl( IOControlCode.KeepAliveValues, tcp_keepalive, null );
Reference
이 문제에 관하여([C#] TCP/IP 서버에서 트래픽 분리 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kurasho/items/275612d408d32923eabd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)