Socket.Bind(EndPoint) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Связывает объект Socket с локальной конечной точкой.
public:
void Bind(System::Net::EndPoint ^ localEP);
public void Bind (System.Net.EndPoint localEP);
member this.Bind : System.Net.EndPoint -> unit
Public Sub Bind (localEP As EndPoint)
Параметры
Исключения
localEP
имеет значение null
.
Произошла ошибка при попытке доступа к сокету.
Socket был закрыт.
Вызывающий объект, находящийся выше в стеке вызовов, не имеет разрешения на запрошенную операцию.
Примеры
В следующем примере кода выполняется привязка с помощью указанной локальной Socket конечной точки.
try
{
aSocket->Bind( anEndPoint );
}
catch ( Exception^ e )
{
Console::WriteLine( "Winsock error: {0}", e );
}
try {
aSocket.Bind(anEndPoint);
}
catch (Exception e) {
Console.WriteLine("Winsock error: " + e.ToString());
}
Try
aSocket.Bind(anEndPoint)
Catch e As Exception
Console.WriteLine("Winsock error: " & e.ToString())
End Try
Комментарии
Используйте метод , Bind если необходимо использовать определенную локальную конечную точку. Перед вызовом Listen метода необходимо вызвать Bind метод . Вам не нужно вызывать Bind метод перед использованием метода , Connect если не требуется использовать определенную локальную конечную точку. Метод можно использовать Bind как в протоколах без подключения, так и в протоколах, ориентированных на подключение.
Перед вызовом Bindнеобходимо сначала создать локальный объект IPEndPoint , из которого планируется передавать данные. Если вам не важно, какой локальный IPEndPoint адрес назначен, можно создать , используя в IPAddress.Any качестве параметра address, и базовый поставщик услуг назначит наиболее подходящий сетевой адрес. Это может помочь упростить приложение при наличии нескольких сетевых интерфейсов. Если вам не важно, какой локальный порт используется, можно создать с IPEndPoint помощью 0 для номера порта. В этом случае поставщик услуг назначит доступный номер порта от 1024 до 5000.
Если вы используете указанный выше подход, вы можете узнать, какой адрес локальной сети и номер порта были назначены, вызвав .LocalEndPoint Если вы используете протокол, ориентированный на подключение, LocalEndPoint не будет возвращать локально назначенный сетевой адрес до тех пор, пока не будет выполнен вызов Connect метода или EndConnect . Если вы используете протокол без подключения, у вас не будет доступа к этой информации, пока вы не завершите отправку или получение.
Если сокет UDP хочет получать сведения об интерфейсе для полученных пакетов, SetSocketOption метод должен вызываться явным образом с параметром сокетаBind, равным PacketInformation сразу после вызова метода.
Примечание
Если вы планируете получать многоадресные датаграммы, необходимо вызвать Bind метод с номером порта многоадресной рассылки.
Примечание
Необходимо вызвать метод , Bind если планируется получать датаграммы без подключения с помощью ReceiveFrom метода .
Примечание
Если вы получаете SocketException при вызове Bind метода , используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.
Примечание
Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.