Socket.EndSend 메서드

정의

보류 중인 비동기 보내기를 끝냅니다.

오버로드

EndSend(IAsyncResult)

보류 중인 비동기 보내기를 끝냅니다.

EndSend(IAsyncResult, SocketError)

보류 중인 비동기 보내기를 끝냅니다.

EndSend(IAsyncResult)

보류 중인 비동기 보내기를 끝냅니다.

public:
 int EndSend(IAsyncResult ^ asyncResult);
public int EndSend (IAsyncResult asyncResult);
member this.EndSend : IAsyncResult -> int
Public Function EndSend (asyncResult As IAsyncResult) As Integer

매개 변수

asyncResult
IAsyncResult

이 비동기 작업에 대한 상태 정보를 저장하는 IAsyncResult입니다.

반환

성공적이면 Socket에 보낸 바이트 수이고, 그렇지 않으면 잘못된 Socket 오류입니다.

예외

asyncResult이(가) null인 경우

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 메서드를 호출했지만 asyncResult가 반환되지 않은 경우

EndSend(IAsyncResult)가 비동기 보내기를 위해 이미 호출된 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

또는

.NET 7 이상만 해당: 가 Socket 닫혔습니다.

.NET Framework, .NET Core 및 .NET 5-6만 해당: 가 Socket 닫혔습니다.

설명

중요

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

EndSend 는 에서 시작한 작업을 완료합니다 BeginSend. 일치하는 BeginSend 호출로 IAsyncResult 만든 을 전달해야 합니다.

연결 없는 프로토콜 EndSend 을 사용하는 경우 는 데이터그램이 전송될 때까지 차단됩니다. 연결 지향 프로토콜 EndSend 을 사용하는 경우 일부 버퍼가 전송될 때까지 가 차단됩니다. 의 EndSend 반환 값이 버퍼가 완전히 전송되지 않았다는 것을 나타내는 경우 메서드를 BeginSend 다시 호출하여 버퍼를 수정하여 보내지 않은 데이터를 저장합니다.

보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 BeginSend 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다.

참고

지정된 스레드에서 시작한 모든 I/O는 해당 스레드가 종료될 때 취소됩니다. 작업이 완료되기 전에 스레드가 종료되면 보류 중인 비동기 작업이 실패할 수 있습니다.

참고

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 전달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 수 있는 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

참고

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

추가 정보

적용 대상

EndSend(IAsyncResult, SocketError)

보류 중인 비동기 보내기를 끝냅니다.

public:
 int EndSend(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndSend (IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndSend : IAsyncResult * SocketError -> int
Public Function EndSend (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer

매개 변수

asyncResult
IAsyncResult

이 비동기 작업에 대한 상태 정보를 저장하는 IAsyncResult입니다.

errorCode
SocketError

소켓 오류를 저장하는 SocketError 개체입니다.

반환

성공적이면 Socket에 보낸 바이트 수이고, 그렇지 않으면 잘못된 Socket 오류입니다.

예외

asyncResult이(가) null인 경우

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 메서드를 호출했지만 asyncResult가 반환되지 않은 경우

EndSend(IAsyncResult)가 비동기 보내기를 위해 이미 호출된 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

또는

.NET 7 이상만 해당: 가 Socket 닫혔습니다.

.NET Framework, .NET Core 및 .NET 5-6만 해당: 가 Socket 닫혔습니다.

설명

중요

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

EndSend 는 에서 시작한 작업을 완료합니다 BeginSend. 일치하는 BeginSend 호출로 IAsyncResult 만든 을 전달해야 합니다.

연결 없는 프로토콜 EndSend 을 사용하는 경우 는 데이터그램이 전송될 때까지 차단됩니다. 연결 지향 프로토콜 EndSend 을 사용하는 경우 일부 버퍼가 전송될 때까지 가 차단됩니다. 의 EndSend 반환 값이 버퍼가 완전히 전송되지 않았다는 것을 나타내는 경우 메서드를 BeginSend 다시 호출하여 버퍼를 수정하여 보내지 않은 데이터를 저장합니다.

보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 BeginSend 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다.

참고

지정된 스레드에서 시작한 모든 I/O는 해당 스레드가 종료될 때 취소됩니다. 작업이 완료되기 전에 스레드가 종료되면 보류 중인 비동기 작업이 실패할 수 있습니다.

참고

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 전달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 수 있는 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

참고

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

추가 정보

적용 대상