Socket.BeginSendTo 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
특정 원격 호스트에 데이터를 비동기적으로 보냅니다.
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
매개 변수
- offset
- Int32
데이터 보내기를 시작할 buffer
의 위치(0부터 시작)입니다.
- size
- Int32
보낼 바이트 수입니다.
- socketFlags
- SocketFlags
SocketFlags 값의 비트 조합입니다.
- callback
- AsyncCallback
AsyncCallback 대리자입니다.
- state
- Object
이 요청에 대한 상태 정보를 포함하는 개체입니다.
반환
비동기 보내기를 참조하는 IAsyncResult입니다.
예외
.NET Framework 및 .NET 5 이하만 해당: 소켓에 액세스하려고 할 때 오류가 발생했습니다.
offset
가 0보다 작습니다.
또는
offset
이 buffer
의 길이보다 큽니다.
또는
size
가 0보다 작습니다.
또는
size
가 buffer
의 길이에서 offset
매개 변수 값을 뺀 크기보다 큰 경우
Socket이 닫혔습니다.
호출 스택의 상위 호출자에게 요청된 작업을 수행할 권한이 없는 경우
설명
중요
호환성 API입니다. 새 개발을 위해 APM (Begin*
및 End*
) 메서드를 사용하지 않는 것이 좋습니다. 대신 에 기반한 Task
등가를 사용합니다.
를 구현하는 콜백을 AsyncCallbackBeginSendTo 전달하여 작업 완료에 대한 알림을 받을 수 있습니다. 기본 네트워크 스택이 동기적으로 작업을 완료하는 경우 콜백은 를 호출 BeginSendTo하는 동안 인라인으로 실행됩니다. 이 경우 반환 IAsyncResult 된 의 CompletedSynchronously 속성이 로 설정 true
되어 메서드가 동기적으로 완료되었음을 나타냅니다. 사용 하 여는 의 AsyncStateIAsyncResult 속성을 메서드에 전달 된 상태 개체를 BeginSendTo 가져옵니다.
메서드를 BeginSendTo 호출 EndSendTo 하여 작업을 완료해야 합니다. 일반적으로 메서드는 제공된 대리자에서 호출됩니다 AsyncCallback . EndSendTo 는 작업이 완료될 때까지 호출 스레드를 차단합니다.
연결 지향 프로토콜을 사용하는 경우 먼저 , , BeginConnectAccept또는 BeginAccept 메서드 BeginSendTo 를 Connect호출하거나 을 SocketExceptionthrow해야 합니다.
BeginSendTo는 매개 변수를 remoteEP
무시하고 , , AcceptBeginConnect또는 BeginAccept 메서드에 설정된 에 Connect데이터를 EndPoint 보냅니다.
연결 없는 프로토콜을 사용하는 경우 를 호출SendTo하기 전에 또는 BeginConnect 메서드를 사용하여 기본 원격 호스트 Connect 를 설정할 필요가 없습니다. 메서드를 호출 BeginSend 하려는 경우에만 이 작업을 수행해야 합니다. 를 호출하기 전에 또는 BeginConnect 메서드를 호출 remoteEP
ConnectSendTo하는 경우 매개 변수는 해당 송신 작업에 대해 지정된 기본 원격 호스트만 재정의합니다. 또한 메서드를 호출 Bind 할 필요가 없습니다. 이 경우 기본 서비스 공급자는 가장 적절한 로컬 네트워크 주소 및 포트 번호를 할당합니다. 기본 서비스 공급자가 무료 포트를 선택하려면 포트 번호 0을 사용합니다. 할당된 로컬 네트워크 주소 및 포트 번호를 식별해야 하는 경우 메서드가 성공적으로 완료된 LocalEndPoint 후 EndSendTo 속성을 사용할 수 있습니다.
브로드캐스트 주소로 데이터를 보내려면 먼저 메서드를 SetSocketOption 호출하고 소켓 옵션을 SocketOptionName.Broadcast로 설정해야 합니다. -또한 버퍼의 크기가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램은 전송 EndSendTo 되지 않고 을 throw합니다 SocketException.
플래그를 DontRoute 매개 변수로 socketflags
지정하면 보내는 데이터가 라우팅되지 않습니다.
참고
을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.
참고
애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.
참고
실행 컨텍스트(보안 컨텍스트, 가장된 사용자 및 호출 컨텍스트)는 비동 Socket 기 메서드에 대해 캐시됩니다. 특정 컨텍스트(특정 비동 Socket 기 메서드, 특정 instance 및 특정 Socket 콜백)를 처음 사용한 후 해당 컨텍스트를 나중에 사용하면 성능이 향상됩니다.
적용 대상
추가 정보
.NET