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 равно 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.
См. также раздел
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- LocalEndPoint
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- Blocking
- Poll(Int32, SelectMode)
Применяется к
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.