> 백엔드 개발 > C++ > 연결이 끊긴 IP 주소에 연결할 때 소켓 연결 시간 초과를 줄이는 방법은 무엇입니까?

연결이 끊긴 IP 주소에 연결할 때 소켓 연결 시간 초과를 줄이는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-10 11:17:41
원래의
431명이 탐색했습니다.

How to Reduce Socket Connect Timeout When Connecting to a Disconnected IP Address?

소켓 연결 시간 초과 줄이기

문제: 소켓을 통해 연결할 수 없는 IP 주소에 연결하면 시간 초과(예: 15초)가 지나치게 길어지는 경우가 많습니다. 이 문서에서는 이러한 지연을 줄이는 방법을 보여줍니다.

원본 코드:

<code class="language-csharp">try
{
    m_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    IPAddress ip = IPAddress.Parse(serverIp);
    int iPortNo = System.Convert.ToInt16(serverPort);
    IPEndPoint ipEnd = new IPEndPoint(ip, iPortNo);
    m_clientSocket.Connect(ipEnd);
    if (m_clientSocket.Connected)
    {
        lb_connectStatus.Text = "Connection Established";
        WaitForServerData();
    }
}
catch (SocketException se)
{
    lb_connectStatus.Text = "Connection Failed";
    MessageBox.Show(se.Message);
}</code>
로그인 후 복사

향상된 솔루션: BeginConnectEndConnect 메서드를 사용하면 시간 초과 동작을 더 효과적으로 제어할 수 있습니다. BeginConnect 시간 초과 기간을 지정할 수 있습니다.

<code class="language-csharp">Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

// Set connection timeout (5 seconds)
IAsyncResult result = socket.BeginConnect(sIP, iPort, null, null);

bool success = result.AsyncWaitHandle.WaitOne(5000, true); // 5000 milliseconds = 5 seconds

if (socket.Connected)
{
    socket.EndConnect(result);
    // ... proceed with connection ...
}
else
{
    // Crucial: Close the socket to release resources
    socket.Close();
    throw new ApplicationException("Failed to connect to server.");
}</code>
로그인 후 복사

이 수정된 코드는 5초 제한 시간으로 연결을 시도합니다. 해당 기간 내에 연결이 실패하면 예외가 발생하고 소켓이 명시적으로 닫힙니다. 이를 통해 리소스 누출을 방지하고 응답성을 향상시킵니다.

위 내용은 연결이 끊긴 IP 주소에 연결할 때 소켓 연결 시간 초과를 줄이는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿