다음을 통해 공유


Socket.Connect 메서드

정의

원격 호스트에 대한 연결을 설정합니다.

오버로드

Connect(EndPoint)

원격 호스트에 대한 연결을 설정합니다.

Connect(IPAddress, Int32)

원격 호스트에 대한 연결을 설정합니다. 호스트는 IP 주소와 포트 번호로 지정됩니다.

Connect(IPAddress[], Int32)

원격 호스트에 대한 연결을 설정합니다. 호스트는 IP 주소의 배열과 포트 번호로 지정됩니다.

Connect(String, Int32)

원격 호스트에 대한 연결을 설정합니다. 호스트는 호스트 이름과 포트 번호로 지정됩니다.

Connect(EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

원격 호스트에 대한 연결을 설정합니다.

public:
 void Connect(System::Net::EndPoint ^ remoteEP);
public void Connect (System.Net.EndPoint remoteEP);
member this.Connect : System.Net.EndPoint -> unit
Public Sub Connect (remoteEP As EndPoint)

매개 변수

remoteEP
EndPoint

원격 디바이스를 나타내는 EndPoint입니다.

예외

remoteEP이(가) null인 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

호출 스택의 상위 호출자에게 요청된 작업을 수행할 권한이 없는 경우

SocketListen(Int32)을 호출하여 수신 상태에 배치되었습니다.

예제

다음 코드 예제에서는 원격 엔드포인트에 연결한 다음 연결을 확인합니다.

client->Connect( anEndPoint );
if (  !client->Connected )
{
   Console::WriteLine( "Winsock error: {0}", Convert::ToString(
      System::Runtime::InteropServices::Marshal::GetLastWin32Error() ) );
}
   
// This is how you can determine whether a socket is still connected.
bool blockingState = client->Blocking;
try
{
   array<Byte>^tmp = gcnew array<Byte>(1);
   client->Blocking = false;
   client->Send( tmp, 0, static_cast<SocketFlags>(0) );
   Console::WriteLine( L"Connected!" );
}
catch ( SocketException^ e ) 
{
   // 10035 == WSAEWOULDBLOCK
   if ( e->NativeErrorCode.Equals( 10035 ) )
   {
      Console::WriteLine( "Connected from an exception!" );
   }
   else
   {
      Console::WriteLine( "Disconnected: {0}!", e->NativeErrorCode );
   }
}
finally
{
   client->Blocking = blockingState;
}

Console::WriteLine( "Connected: {0}", client->Connected );
// .Connect throws an exception if unsuccessful
client.Connect(anEndPoint);

// This is how you can determine whether a socket is still connected.
bool blockingState = client.Blocking;
try
{
    byte [] tmp = new byte[1];

    client.Blocking = false;
    client.Send(tmp, 0, 0);
    Console.WriteLine("Connected!");
}
catch (SocketException e)
{
    // 10035 == WSAEWOULDBLOCK
    if (e.NativeErrorCode.Equals(10035))
    {
        Console.WriteLine("Still Connected, but the Send would block");
    }
    else
    {
        Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
    }
}
finally
{
    client.Blocking = blockingState;
}

Console.WriteLine("Connected: {0}", client.Connected);
    ' .Connect throws an exception if unsuccessful
    client.Connect(anEndPoint)
    
    ' This is how you can determine whether a socket is still connected.
    Dim blockingState As Boolean = client.Blocking
    Try
        Dim tmp(0) As Byte
        
        client.Blocking = False
        client.Send(tmp, 0, 0)
        Console.WriteLine("Connected!")
    Catch e As SocketException
        ' 10035 == WSAEWOULDBLOCK
        If e.NativeErrorCode.Equals(10035) Then
            Console.WriteLine("Still Connected, but the Send would block")
        Else
            Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode)
        End If
    Finally
        client.Blocking = blockingState
    End Try
    
    Console.WriteLine("Connected: {0}", client.Connected)

End Sub

설명

TCP와 같은 연결 지향 프로토콜을 사용하는 경우 메서드는 Connect 및 지정된 원격 엔드포인트 간에 LocalEndPoint 네트워크 연결을 동기적으로 설정합니다. 연결 없는 프로토콜 Connect 을 사용하는 경우 는 기본 원격 호스트를 설정합니다. 호출한 후 Connect를 사용 하 여 원격 디바이스에 데이터를 보낼 수 있습니다 합니다 Send 메서드를 사용 하 여 원격 디바이스에서 데이터를 수신 하거나는 Receive 메서드.

UDP와 같은 연결 없는 프로토콜을 사용하는 경우 데이터를 보내고 받기 전에 를 호출 Connect 할 필요가 없습니다. 및 를 ReceiveFrom 사용하여 SendTo 원격 호스트와 동기적으로 통신할 수 있습니다. 를 호출 Connect하면 지정된 기본값 이외의 주소에서 도착하는 모든 데이터그램이 삭제됩니다. 기본 원격 호스트를 브로드캐스트 주소로 설정하려면 먼저 메서드를 호출 SetSocketOption 하고 소켓 옵션을 SocketOptionName.Broadcast로 설정하거나 ConnectSocketExceptionthrow합니다. 을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

메서드는 Connect 를 호출Connect하기 전에 속성을 false 로 구체적으로 설정 Blocking 하지 않는 한 차단됩니다. TCP와 같은 연결 지향 프로토콜을 사용 중이고 차단 Connect 을 사용하지 않도록 설정하는 경우 은 연결을 만드는 데 시간이 필요하기 때문에 을 throw SocketException 합니다. 연결 없는 프로토콜은 단순히 기본 원격 호스트를 설정하기 때문에 예외를 throw하지 않습니다. 를 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져올 수 있습니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요. 오류가 WSAEWOULDBLOCK을 반환한 경우 원격 호스트 연결은 연결 지향 Socket에 의해 시작되었지만 아직 성공적으로 완료되지 않았습니다. 메서드를 Poll 사용하여 가 Socket 연결이 완료된 시기를 확인합니다.

참고

연결 지향 프로토콜을 사용 중이고 를 호출하기 전에 를 호출 BindConnect하지 않은 경우 기본 서비스 공급자는 로컬 네트워크 주소 및 포트 번호를 할당합니다. 연결 없는 프로토콜을 사용하는 경우 송신 또는 수신 작업을 완료할 때까지 서비스 공급자는 로컬 네트워크 주소 및 포트 번호를 할당하지 않습니다. 기본 원격 호스트를 변경하려면 원하는 엔드포인트를 사용하여 를 다시 호출 Connect 합니다.

참고

소켓의 연결이 이전에 끊어진 경우 이 메서드를 사용하여 연결을 복원할 수 없습니다. 비동 BeginConnect 기 메서드 중 하나를 사용하여 다시 연결합니다. 이는 기본 공급자의 제한 사항입니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

추가 정보

적용 대상

Connect(IPAddress, Int32)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

원격 호스트에 대한 연결을 설정합니다. 호스트는 IP 주소와 포트 번호로 지정됩니다.

public:
 void Connect(System::Net::IPAddress ^ address, int port);
public void Connect (System.Net.IPAddress address, int port);
member this.Connect : System.Net.IPAddress * int -> unit
Public Sub Connect (address As IPAddress, port As Integer)

매개 변수

address
IPAddress

원격 호스트의 IP 주소입니다.

port
Int32

원격 호스트의 포트 번호입니다.

예외

address이(가) null인 경우

포트 번호가 잘못된 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

이 메서드는 InterNetwork 또는 InterNetworkV6 제품군의 소켓에 유효합니다.

address의 길이가 0입니다.

SocketListen(Int32)을 호출하여 수신 상태에 배치되었습니다.

예제

다음 코드 예제에서는 원격 엔드포인트에 연결한 다음 연결을 확인합니다.

// Synchronous connect using IPAddress to resolve the 
// host name.
static void Connect1( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( IPs[ 0 ], port );
   Console::WriteLine( "Connection established" );
}
// Synchronous connect using IPAddress to resolve the
// host name.
public static void Connect1(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(IPs[0], port);
    Console.WriteLine("Connection established");
}

설명

TCP와 같은 연결 지향 프로토콜을 사용하는 경우 메서드는 Connect 및 지정된 원격 엔드포인트 간에 LocalEndPoint 네트워크 연결을 동기적으로 설정합니다. 연결 없는 프로토콜 Connect 을 사용하는 경우 는 기본 원격 호스트를 설정합니다. 호출한 후 Connect 사용 하 여 원격 디바이스에 데이터를 보낼 수 있습니다 합니다 Send 메서드를 사용 하 여 원격 디바이스에서 데이터를 수신 하거나는 Receive 메서드.

UDP와 같은 연결 없는 프로토콜을 사용하는 경우 데이터를 보내고 받기 전에 를 호출 Connect 할 필요가 없습니다. 및 를 ReceiveFrom 사용하여 SendTo 원격 호스트와 동기적으로 통신할 수 있습니다. 를 호출 Connect 하면 지정된 기본값이 아닌 주소에서 도착하는 데이터그램이 삭제됩니다. 기본 원격 호스트를 브로드캐스트 주소로 설정하려면 먼저 메서드를 호출 SetSocketOption 하고 소켓 옵션을 SocketOptionName.Broadcast로 설정하거나 ConnectSocketExceptionthrow합니다. 을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

Connect메서드는 를 호출Connect하기 전에 속성을 false 로 구체적으로 설정 Blocking 하지 않는 한 차단됩니다. TCP와 같은 연결 지향 프로토콜을 사용 중이고 차단 Connect 을 사용하지 않도록 설정하는 경우 은 연결을 만드는 데 시간이 필요하기 때문에 을 throw SocketException 합니다. 연결 없는 프로토콜은 단순히 기본 원격 호스트를 설정하기 때문에 예외를 throw하지 않습니다. 를 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져올 수 있습니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요. 오류가 WSAEWOULDBLOCK을 반환한 경우 원격 호스트 연결은 연결 지향 Socket에 의해 시작되었지만 아직 성공적으로 완료되지 않았습니다. 메서드를 Poll 사용하여 가 Socket 연결이 완료된 시기를 확인합니다.

참고

연결 지향 프로토콜을 사용 중이고 를 호출하기 전에 를 호출 BindConnect하지 않은 경우 기본 서비스 공급자는 로컬 네트워크 주소 및 포트 번호를 할당합니다. 연결 없는 프로토콜을 사용하는 경우 송신 또는 수신 작업을 완료할 때까지 서비스 공급자는 로컬 네트워크 주소 및 포트 번호를 할당하지 않습니다. 기본 원격 호스트를 변경하려면 원하는 엔드포인트를 사용하여 를 다시 호출 Connect 합니다.

참고

소켓의 연결이 이전에 끊어진 경우 이 메서드를 사용하여 연결을 복원할 수 없습니다. 비동 BeginConnect 기 메서드 중 하나를 사용하여 다시 연결합니다. 이는 기본 공급자의 제한 사항입니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

적용 대상

Connect(IPAddress[], Int32)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

원격 호스트에 대한 연결을 설정합니다. 호스트는 IP 주소의 배열과 포트 번호로 지정됩니다.

public:
 void Connect(cli::array <System::Net::IPAddress ^> ^ addresses, int port);
public void Connect (System.Net.IPAddress[] addresses, int port);
member this.Connect : System.Net.IPAddress[] * int -> unit
Public Sub Connect (addresses As IPAddress(), port As Integer)

매개 변수

addresses
IPAddress[]

원격 호스트의 IP 주소입니다.

port
Int32

원격 호스트의 포트 번호입니다.

예외

addresses이(가) null인 경우

포트 번호가 잘못된 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

소켓이 또는 InterNetworkV6 패밀리에 InterNetwork 없습니다.

address의 길이가 0입니다.

SocketListen(Int32)을 호출하여 수신 상태에 배치되었습니다.

예제

다음 코드 예제에서는 원격 엔드포인트에 연결한 다음 연결을 확인합니다.

// Synchronous connect using Dns.ResolveToAddresses to 
// resolve the host name.
static void Connect2( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( IPs, port );
   Console::WriteLine( "Connection established" );
}
// Synchronous connect using Dns.GetHostAddresses to
// resolve the host name.
public static void Connect2(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);
    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(IPs, port);
    Console.WriteLine("Connection established");
}

설명

이 메서드는 일반적으로 단일 호스트에 대해 여러 IP 주소를 반환할 GetHostAddresses수 있는 를 호출한 직후에 사용됩니다. TCP와 같은 연결 지향 프로토콜을 사용하는 경우 메서드는 Connect 지정된 원격 엔드포인트와 네트워크 LocalEndPoint 연결을 동기적으로 설정합니다. 연결 없는 프로토콜 Connect 을 사용하는 경우 기본 원격 호스트를 설정합니다. 호출한 후 Connect 사용 하 여 원격 디바이스에 데이터를 보낼 수 있습니다 합니다 Send 메서드를 사용 하 여 원격 디바이스에서 데이터를 수신 하거나는 Receive 메서드.

UDP와 같은 연결 없는 프로토콜을 사용하는 경우 데이터를 보내고 받기 전에 를 호출 Connect 할 필요가 없습니다. 및 를 ReceiveFrom 사용하여 SendTo 원격 호스트와 동기적으로 통신할 수 있습니다. 지정한 기본값 이외의 주소에서 도착하는 데이터그램을 호출 Connect 하면 삭제됩니다. 기본 원격 호스트를 브로드캐스트 주소로 설정하려면 먼저 메서드를 호출 SetSocketOption 하고 소켓 옵션을 SocketOptionName.Broadcast로 설정하거나 ConnectSocketExceptionthrow해야 합니다. 를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

Connect메서드는 를 호출Connect하기 전에 속성을 false 로 구체적으로 설정 Blocking 하지 않는 한 차단됩니다. TCP와 같은 연결 지향 프로토콜을 사용 중이고 차단 Connect 을 사용하지 않도록 설정하는 경우 은 연결을 만드는 데 시간이 필요하기 때문에 을 throw SocketException 합니다. 연결 없는 프로토콜은 단순히 기본 원격 호스트를 설정하기 때문에 예외를 throw하지 않습니다. 를 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져올 수 있습니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요. 오류가 WSAEWOULDBLOCK을 반환한 경우 원격 호스트 연결은 연결 지향 Socket에 의해 시작되었지만 아직 성공적으로 완료되지 않았습니다. 메서드를 Poll 사용하여 가 연결을 완료한 Socket 시기를 결정합니다.

참고

연결 지향 프로토콜을 사용하고 호출Connect하기 전에 를 호출 Bind 하지 않은 경우 기본 서비스 공급자는 로컬 네트워크 주소 및 포트 번호를 할당합니다. 연결 없는 프로토콜을 사용하는 경우 송신 또는 수신 작업을 완료할 때까지 서비스 공급자가 로컬 네트워크 주소 및 포트 번호를 할당하지 않습니다. 기본 원격 호스트를 변경하려면 원하는 엔드포인트를 사용하여 를 다시 호출 Connect 합니다.

참고

소켓의 연결이 이전에 끊어진 경우 이 메서드를 사용하여 연결을 복원할 수 없습니다. 비동 BeginConnect 기 메서드 중 하나를 사용하여 다시 연결합니다. 이는 기본 공급자의 제한 사항입니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

적용 대상

Connect(String, Int32)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

원격 호스트에 대한 연결을 설정합니다. 호스트는 호스트 이름과 포트 번호로 지정됩니다.

public:
 void Connect(System::String ^ host, int port);
public void Connect (string host, int port);
member this.Connect : string * int -> unit
Public Sub Connect (host As String, port As Integer)

매개 변수

host
String

원격 호스트의 이름입니다.

port
Int32

원격 호스트의 포트 번호입니다.

예외

host이(가) null인 경우

포트 번호가 잘못된 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

소켓이 또는 InterNetworkV6 패밀리에 InterNetwork 없습니다.

SocketListen(Int32)을 호출하여 수신 상태에 배치되었습니다.

예제

다음 코드 예제에서는 원격 엔드포인트에 연결한 다음 연결을 확인합니다.

// Synchronous connect using host name (resolved by the 
// Connect call.)
static void Connect3( String^ host, int port )
{
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( host, port );
   Console::WriteLine( "Connection established" );
}
// Synchronous connect using host name (resolved by the
// Connect call.)
public static void Connect3(string host, int port)
{
    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(host, port);
    Console.WriteLine("Connection established");
}

설명

TCP와 같은 연결 지향 프로토콜을 사용하는 경우 메서드는 Connect 및 지정된 원격 호스트 간에 LocalEndPoint 네트워크 연결을 동기적으로 설정합니다. 연결 없는 프로토콜 Connect 을 사용하는 경우 기본 원격 호스트를 설정합니다. 호출한 후 Connect 사용 하 여 원격 디바이스에 데이터를 보낼 수 있습니다 합니다 Send 메서드를 사용 하 여 원격 디바이스에서 데이터를 수신 하거나는 Receive 메서드.

UDP와 같은 연결 없는 프로토콜을 사용하는 경우 데이터를 보내고 받기 전에 를 호출 Connect 할 필요가 없습니다. 및 를 ReceiveFrom 사용하여 SendTo 원격 호스트와 동기적으로 통신할 수 있습니다. 지정한 기본값 이외의 주소에서 도착하는 데이터그램을 호출 Connect 하면 삭제됩니다. 기본 원격 호스트를 브로드캐스트 주소로 설정하려면 먼저 메서드를 호출 SetSocketOption 하고 소켓 옵션을 SocketOptionName.Broadcast로 설정하거나 ConnectSocketExceptionthrow해야 합니다. 를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

를 호출Connect하기 전에 속성을 false 로 구체적으로 설정 Blocking 하지 않는 한 메서드는 Connect 차단됩니다. TCP와 같은 연결 지향 프로토콜을 사용하고 차단 Connect 을 사용하지 않도록 설정하면 연결을 만드는 데 시간이 필요하기 때문에 가 SocketException throw됩니다. 연결 없는 프로토콜은 단순히 기본 원격 호스트를 설정하기 때문에 예외를 throw하지 않습니다. 를 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져올 수 있습니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요. 오류가 WSAEWOULDBLOCK을 반환한 경우 원격 호스트 연결은 연결 지향 Socket에 의해 시작되었지만 아직 성공적으로 완료되지 않았습니다. 메서드를 Poll 사용하여 가 연결을 완료한 Socket 시기를 결정합니다.

IPv6을 사용하도록 설정하고 Connect(String, Int32) 메서드를 호출하여 IPv6 및 IPv4 주소 둘 다로 확인되는 호스트에 연결하면 IPv4 주소 이전에 IPv6 주소에 대한 연결이 먼저 시도됩니다. 호스트가 IPv6 주소에서 수신 대기하지 않는 경우 연결 설정 시간이 지연되는 영향을 미칠 수 있습니다.

참고

연결 지향 프로토콜을 사용하고 호출Connect하기 전에 를 호출 Bind 하지 않은 경우 기본 서비스 공급자는 로컬 네트워크 주소 및 포트 번호를 할당합니다. 연결 없는 프로토콜을 사용하는 경우 송신 또는 수신 작업을 완료할 때까지 서비스 공급자가 로컬 네트워크 주소 및 포트 번호를 할당하지 않습니다. 기본 원격 호스트를 변경하려면 원하는 엔드포인트를 사용하여 를 다시 호출 Connect 합니다.

참고

소켓의 연결이 이전에 끊어진 경우 이 메서드를 사용하여 연결을 복원할 수 없습니다. 비동 BeginConnect 기 메서드 중 하나를 사용하여 다시 연결합니다. 이는 기본 공급자의 제한 사항입니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

적용 대상