Бөлісу құралы:


Socket.Connect Метод

Определение

Устанавливает подключение к удаленному узлу.

Перегрузки

Имя Описание
Connect(EndPoint)

Устанавливает подключение к удаленному узлу.

Connect(IPAddress, Int32)

Устанавливает подключение к удаленному узлу. Узел указывается IP-адресом и номером порта.

Connect(IPAddress[], Int32)

Устанавливает подключение к удаленному узлу. Узел указывается массивом IP-адресов и номером порта.

Connect(String, Int32)

Устанавливает подключение к удаленному узлу. Узел указывается именем узла и номером порта.

Connect(EndPoint)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
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 был закрыт.

Вызывающий объект выше в стеке вызовов не имеет разрешения на запрошенную операцию.

Объект Socket помещается в состояние прослушивания путем вызова Listen(Int32).

Примеры

Следующий пример кода подключается к удаленной конечной точке, а затем проверяет подключение.

// .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 . Вы можете использовать SendTo и ReceiveFrom синхронно взаимодействовать с удаленным узлом. При вызове Connectвсе граммы данных, поступающие из адреса, отличного от указанного по умолчанию, будут удалены. Если вы хотите задать удаленный узел по умолчанию для широковещательного адреса, необходимо сначала вызвать SetSocketOption метод и задать параметр SocketOptionName.Broadcastсокета или Connect вызвать SocketExceptionисключение. При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.

Этот Connect метод блокируется, если только свойство не задано Blockingfalse до вызова Connect. Если вы используете протокол, ориентированный на подключение, например TCP, и вы отключаете блокировку, вызовет SocketException исключение, Connect так как требуется время для подключения. Протоколы без подключения не будут вызывать исключение, так как они просто устанавливают удаленный узел по умолчанию. Вы можете использовать SocketException.ErrorCode для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки. Если ошибка вернула WSAEWOULDBLOCK, подключение удаленного узла было инициировано ориентированным Socketна подключение, но еще не завершено. Poll Используйте метод для определения Socket завершения подключения.

Замечание

Если вы используете протокол, ориентированный на подключение, и не звонили перед вызовом BindConnect, базовый поставщик услуг назначит адрес локальной сети и номер порта. Если вы используете протокол без подключения, поставщик услуг не назначит адрес локальной сети и номер порта, пока не завершите операцию отправки или получения. Если вы хотите изменить удаленный узел по умолчанию, снова вызовите Connect нужную конечную точку.

Замечание

Если сокет был отключен ранее, этот метод нельзя использовать для восстановления подключения. Используйте один из асинхронных BeginConnect методов для повторного подключения. Это ограничение базового поставщика.

Замечание

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.

См. также раздел

Применяется к

Connect(IPAddress, Int32)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
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 равно нулю.

Объект Socket помещается в состояние прослушивания путем вызова Listen(Int32).

Примеры

Следующий пример кода подключается к удаленной конечной точке, а затем проверяет подключение.

// 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 . Вы можете использовать SendTo и ReceiveFrom синхронно взаимодействовать с удаленным узлом. Если вы вызываете Connect любые диаграммы данных, поступающие из адреса, отличного от указанного по умолчанию, будут удалены. Если вы хотите задать удаленный узел по умолчанию для широковещательного адреса, необходимо сначала вызвать SetSocketOption метод и задать параметр SocketOptionName.Broadcastсокета или Connect вызвать SocketExceptionисключение. При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.

Connect метод блокируется, если только свойство не задано Blockingfalse перед вызовом Connect. Если вы используете протокол, ориентированный на подключение, например TCP, и вы отключаете блокировку, вызовет SocketException исключение, Connect так как требуется время для подключения. Протоколы без подключения не будут вызывать исключение, так как они просто устанавливают удаленный узел по умолчанию. Вы можете использовать SocketException.ErrorCode для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки. Если ошибка вернула WSAEWOULDBLOCK, подключение удаленного узла было инициировано ориентированным Socketна подключение, но еще не завершено. Poll Используйте метод для определения Socket завершения подключения.

Замечание

Если вы используете протокол, ориентированный на подключение, и не звонили перед вызовом BindConnect, базовый поставщик услуг назначит адрес локальной сети и номер порта. Если вы используете протокол без подключения, поставщик услуг не назначит адрес локальной сети и номер порта, пока не завершите операцию отправки или получения. Если вы хотите изменить удаленный узел по умолчанию, снова вызовите Connect нужную конечную точку.

Замечание

Если сокет был отключен ранее, этот метод нельзя использовать для восстановления подключения. Используйте один из асинхронных BeginConnect методов для повторного подключения. Это ограничение базового поставщика.

Замечание

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.

Применяется к

Connect(IPAddress[], Int32)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
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 был закрыт.

Сокет не находится в семействеInterNetwork.InterNetworkV6

Длина addresses равно нулю.

Объект Socket помещается в состояние прослушивания путем вызова Listen(Int32).

Примеры

Следующий пример кода подключается к удаленной конечной точке, а затем проверяет подключение.

// 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");
}

Комментарии

Этот метод обычно используется сразу после вызова GetHostAddresses, который может возвращать несколько IP-адресов для одного узла. Если вы используете протокол, ориентированный на подключение, например TCP, Connect метод синхронно устанавливает сетевое подключение между LocalEndPoint и указанной удаленной конечной точкой. Если вы используете протокол без подключения, Connect установите удаленный узел по умолчанию. После вызова Connect можно отправить данные на удаленное устройство с Send помощью метода или получить данные с удаленного устройства с Receive помощью метода.

Если вы используете протокол без подключения, например UDP, перед отправкой и получением данных не нужно вызывать Connect . Вы можете использовать SendTo и ReceiveFrom синхронно взаимодействовать с удаленным узлом. Если вы вызываете Connect любые диаграммы данных, поступающие из адреса, отличного от указанного по умолчанию, будут удалены. Если вы хотите задать удаленный узел по умолчанию для широковещательного адреса, необходимо сначала вызвать SetSocketOption метод и задать параметр SocketOptionName.Broadcastсокета или Connect вызвать SocketExceptionисключение. При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.

Connect метод блокируется, если только свойство не задано Blockingfalse перед вызовом Connect. Если вы используете протокол, ориентированный на подключение, например TCP, и вы отключаете блокировку, вызовет SocketException исключение, Connect так как требуется время для подключения. Протоколы без подключения не будут вызывать исключение, так как они просто устанавливают удаленный узел по умолчанию. Вы можете использовать SocketException.ErrorCode для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки. Если ошибка вернула WSAEWOULDBLOCK, подключение удаленного узла было инициировано ориентированным Socketна подключение, но еще не завершено. Poll Используйте метод для определения Socket завершения подключения.

Замечание

Если вы используете протокол, ориентированный на подключение, и не звонили перед вызовом BindConnect, базовый поставщик услуг назначит адрес локальной сети и номер порта. Если вы используете протокол без подключения, поставщик услуг не назначит адрес локальной сети и номер порта, пока не завершите операцию отправки или получения. Если вы хотите изменить удаленный узел по умолчанию, снова вызовите Connect нужную конечную точку.

Замечание

Если сокет был отключен ранее, этот метод нельзя использовать для восстановления подключения. Используйте один из асинхронных BeginConnect методов для повторного подключения. Это ограничение базового поставщика.

Замечание

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.

Применяется к

Connect(String, Int32)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
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 был закрыт.

Сокет не находится в семействеInterNetwork.InterNetworkV6

Объект Socket помещается в состояние прослушивания путем вызова Listen(Int32).

Примеры

Следующий пример кода подключается к удаленной конечной точке, а затем проверяет подключение.

// 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 . Вы можете использовать SendTo и ReceiveFrom синхронно взаимодействовать с удаленным узлом. Если вы вызываете Connect любые диаграммы данных, поступающие из адреса, отличного от указанного по умолчанию, будут удалены. Если вы хотите задать удаленный узел по умолчанию для широковещательного адреса, необходимо сначала вызвать SetSocketOption метод и задать параметр SocketOptionName.Broadcastсокета или Connect вызвать SocketExceptionисключение. При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.

Этот Connect метод блокируется, если только свойство не задано Blockingfalse до вызова Connect. Если вы используете протокол, ориентированный на подключение, например TCP, и вы отключаете блокировку, вызовет исключениеSocketException, Connect так как требуется время для подключения. Протоколы без подключения не будут вызывать исключение, так как они просто устанавливают удаленный узел по умолчанию. Вы можете использовать SocketException.ErrorCode для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки. Если ошибка вернула WSAEWOULDBLOCK, подключение удаленного узла было инициировано ориентированным Socketна подключение, но еще не завершено. Poll Используйте метод для определения Socket завершения подключения.

Если протокол IPv6 включен, и Connect(String, Int32) метод вызывается для подключения к узлу, разрешающего как IPv6, так и IPv4-адреса, подключение к IPv6-адресу будет выполнено сначала до IPv4-адреса. Это может повлиять на задержку времени установки подключения, если узел не прослушивает IPv6-адрес.

Замечание

Если вы используете протокол, ориентированный на подключение, и не звонили перед вызовом BindConnect, базовый поставщик услуг назначит адрес локальной сети и номер порта. Если вы используете протокол без подключения, поставщик услуг не назначит адрес локальной сети и номер порта, пока не завершите операцию отправки или получения. Если вы хотите изменить удаленный узел по умолчанию, снова вызовите Connect нужную конечную точку.

Замечание

Если сокет был отключен ранее, этот метод нельзя использовать для восстановления подключения. Используйте один из асинхронных BeginConnect методов для повторного подключения. Это ограничение базового поставщика.

Замечание

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.

Применяется к