■ Socket 클래스 : 소켓 연결시 시간 제한하기
------------------------------------------------------------------------------------------------------------------------
using System;
using System.Net;
using System.Net.Sockets;
#region 서버 연결하기 - ConnectToserver(targetIPEndPoint, port, timeOutMillisecondCount)
/// <summary>
/// 서버 연결하기
/// </summary>
/// <param name="targetIPEndPoint">타겟 IP 종점</param>
/// <param name="port">포트</param>
/// <param name="timeOutMillisecondCount">타임아웃(밀리초)</param>
/// <returns>소켓</returns>
public static Socket ConnectToserver(IPEndPoint targetIPEndPoint, int port, int timeOutMillisecondCount)
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
socket.Blocking = false;
socket.Connect(targetIPEndPoint);
return socket;
}
catch(SocketException socketException)
{
if(socketException.ErrorCode != 10035)
{
socket.Close();
throw;
}
int timeOutMicrosecondCount = timeOutMillisecondCount * 1000;
if(!socket.Poll(timeOutMicrosecondCount, SelectMode.SelectWrite))
{
socket.Close();
throw new Exception("The host failed to connect");
}
socket.Blocking = true;
return socket;
}
}
#endregion
------------------------------------------------------------------------------------------------------------------------
'C# > Common' 카테고리의 다른 글
[C#/COMMON] SpeechSynthesizer 클래스 : GetInstalledVoices 메소드를 사용해 설치 음성 목록 구하기 (0) | 2019.06.11 |
---|---|
[C#/COMMON] UNIX 타임 스탬프 구하기 (0) | 2019.06.09 |
[C#/COMMON] WIN32 API를 사용해 최상위 윈도우 여부 구하기 (0) | 2019.06.06 |
[C#/COMMON] Process 클래스 : 윈도우즈 서비스 실행하기 (0) | 2019.06.06 |
[C#/COMMON] 공용체(Union) 구조체 사용하기 (0) | 2019.06.02 |
[C#/COMMON] Socket 클래스 : 소켓 연결시 시간 제한하기 (0) | 2019.06.02 |
[C#/COMMON] 파일 확장자 연결하기 (0) | 2019.05.30 |
[C#/COMMON] 바이트 배열에서 구조체 객체 구하기 (0) | 2019.05.27 |
[C#/COMMON] 구조체 바이트 배열 구하기 (0) | 2019.05.27 |
[C#/COMMON] Assembly 클래스 : 어셈블리 GUID 구하기 (0) | 2019.05.26 |
[C#/COMMON] Socket 클래스 : 호스트 IP 주소 구하기 (0) | 2019.05.26 |
댓글을 달아 주세요