다음을 통해 공유


Socket.BeginSendTo 메서드

정의

특정 원격 호스트에 데이터를 비동기적으로 보냅니다.

public:
 IAsyncResult ^ BeginSendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginSendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult

매개 변수

buffer
Byte[]

보낼 데이터를 포함하는 Byte 형식의 배열입니다.

offset
Int32

데이터 보내기를 시작할 buffer의 위치(0부터 시작)입니다.

size
Int32

보낼 바이트 수입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

remoteEP
EndPoint

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

callback
AsyncCallback

AsyncCallback 대리자입니다.

state
Object

이 요청에 대한 상태 정보를 포함하는 개체입니다.

반환

비동기 보내기를 참조하는 IAsyncResult입니다.

예외

buffernull입니다.

또는

remoteEPnull입니다.

.NET Framework 및 .NET 5 이하만 해당: 소켓에 액세스하려고 할 때 오류가 발생했습니다.

offset 가 0보다 작습니다.

또는

offsetbuffer의 길이보다 큽니다.

또는

size 가 0보다 작습니다.

또는

sizebuffer 의 길이에서 offset 매개 변수 값을 뺀 크기보다 큰 경우

Socket이 닫혔습니다.

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

설명

중요

호환성 API입니다. 새 개발을 위해 APM (Begin*End*) 메서드를 사용하지 않는 것이 좋습니다. 대신 에 기반한 Task등가를 사용합니다.

를 구현하는 콜백을 AsyncCallbackBeginSendTo 전달하여 작업 완료에 대한 알림을 받을 수 있습니다. 기본 네트워크 스택이 동기적으로 작업을 완료하는 경우 콜백은 를 호출 BeginSendTo하는 동안 인라인으로 실행됩니다. 이 경우 반환 IAsyncResult 된 의 CompletedSynchronously 속성이 로 설정 true 되어 메서드가 동기적으로 완료되었음을 나타냅니다. 사용 하 여는 의 AsyncStateIAsyncResult 속성을 메서드에 전달 된 상태 개체를 BeginSendTo 가져옵니다.

메서드를 BeginSendTo 호출 EndSendTo 하여 작업을 완료해야 합니다. 일반적으로 메서드는 제공된 대리자에서 호출됩니다 AsyncCallback . EndSendTo 는 작업이 완료될 때까지 호출 스레드를 차단합니다.

연결 지향 프로토콜을 사용하는 경우 먼저 , , BeginConnectAccept또는 BeginAccept 메서드 BeginSendToConnect호출하거나 을 SocketExceptionthrow해야 합니다. BeginSendTo는 매개 변수를 remoteEP 무시하고 , , AcceptBeginConnect또는 BeginAccept 메서드에 설정된 에 Connect데이터를 EndPoint 보냅니다.

연결 없는 프로토콜을 사용하는 경우 를 호출SendTo하기 전에 또는 BeginConnect 메서드를 사용하여 기본 원격 호스트 Connect 를 설정할 필요가 없습니다. 메서드를 호출 BeginSend 하려는 경우에만 이 작업을 수행해야 합니다. 를 호출하기 전에 또는 BeginConnect 메서드를 호출 remoteEPConnectSendTo하는 경우 매개 변수는 해당 송신 작업에 대해 지정된 기본 원격 호스트만 재정의합니다. 또한 메서드를 호출 Bind 할 필요가 없습니다. 이 경우 기본 서비스 공급자는 가장 적절한 로컬 네트워크 주소 및 포트 번호를 할당합니다. 기본 서비스 공급자가 무료 포트를 선택하려면 포트 번호 0을 사용합니다. 할당된 로컬 네트워크 주소 및 포트 번호를 식별해야 하는 경우 메서드가 성공적으로 완료된 LocalEndPointEndSendTo 속성을 사용할 수 있습니다.

브로드캐스트 주소로 데이터를 보내려면 먼저 메서드를 SetSocketOption 호출하고 소켓 옵션을 SocketOptionName.Broadcast로 설정해야 합니다. -또한 버퍼의 크기가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램은 전송 EndSendTo 되지 않고 을 throw합니다 SocketException.

플래그를 DontRoute 매개 변수로 socketflags 지정하면 보내는 데이터가 라우팅되지 않습니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

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

참고

실행 컨텍스트(보안 컨텍스트, 가장된 사용자 및 호출 컨텍스트)는 비동 Socket 기 메서드에 대해 캐시됩니다. 특정 컨텍스트(특정 비동 Socket 기 메서드, 특정 instance 및 특정 Socket 콜백)를 처음 사용한 후 해당 컨텍스트를 나중에 사용하면 성능이 향상됩니다.

적용 대상

추가 정보