Socket.SendPacketsAsync(SocketAsyncEventArgs) 메서드

정의

파일 컬렉션 또는 메모리 내 데이터 버퍼를 연결된 Socket 개체에 비동기적으로 보냅니다.

public bool SendPacketsAsync (System.Net.Sockets.SocketAsyncEventArgs e);

매개 변수

e
SocketAsyncEventArgs

이 비동기 소켓 작업에 사용할 SocketAsyncEventArgs 개체입니다.

반환

I/O 작업이 보류 중인 경우 true입니다. 작업이 완료되면 e 매개 변수에 대한 Completed 이벤트가 발생합니다.

I/O 작업이 동기적으로 완료된 경우 false입니다. 이 경우에는 e 매개 변수에서 Completed 이벤트가 발생하지 않으며, 메서드 호출이 반환된 직후 매개 변수로 전달된 e 개체를 검사하여 작업 결과를 검색할 수 있습니다.

예외

FilePath 속성에 지정된 파일을 찾을 수 없는 경우

e 매개 변수에 지정된 SocketAsyncEventArgs 개체를 사용하여 소켓 작업이 이미 진행 중인 경우

Socket가 원격 호스트에 연결되어 있지 않은 경우

Socket이 닫혔습니다.

연결 없는 Socket이 사용되고 있고 보내는 파일이 내부 전송의 최대 패킷 크기를 초과하는 경우

설명

메서드는 SendPacketsAsync 원격 호스트에 파일 또는 메모리 데이터 버퍼의 컬렉션을 보내는 데 사용 됩니다. 는 Socket 이미 원격 호스트에 연결되어 있어야 합니다.

작업 System.Net.Sockets.SendPacketsElement 디렉터리의 파일을 참조하는 경우 파일 이름만으로 식별될 수 있습니다. 그렇지 않으면 파일의 전체 경로와 이름을 지정해야 합니다. 와일드카드 및 UNC 공유 이름이 지원됩니다. 파일을 찾을 수 없으면 이 FileNotFoundException throw됩니다.

완료 알림을 받으려면 EventHandler<SocketAsyncEventArgs> 대리자를 구현하는 콜백 메서드를 만들고 콜백을 SocketAsyncEventArgs.Completed 이벤트에 연결해야 합니다.

매개 변수의 e 속성은 SocketAsyncEventArgs.SendPacketsFlags Window Sockets 서비스 공급자에게 파일 전송에 대한 추가 정보를 제공합니다. 이 매개 변수를 사용하는 방법에 대한 자세한 내용은 를 참조하세요 TransmitFileOptions.

이 메서드를 성공적으로 호출하려면 개체의 System.Net.Sockets.SocketAsyncEventArgs 다음 속성과 이벤트가 필요합니다.

호출자는 콜백 메서드에서 SocketAsyncEventArgs.UserToken 정보를 검색할 수 있도록 메서드를 호출 SendPacketsAsync 하기 전에 속성을 원하는 사용자 상태 개체로 설정할 수 있습니다. 콜백에 단일 개체보다 더 많은 정보가 필요한 경우 다른 필수 상태 정보를 멤버로 유지하기 위해 작은 클래스를 만들 수 있습니다.

이 메서드는 Windows 소켓 2 API에 있는 TransmitPackets 함수를 사용합니다. TransmitPackets 함수 및 해당 플래그에 대한 자세한 내용은 Windows 소켓 설명서를 참조하세요.

연결 지향 프로토콜을 위한 것이지만, SendPacketsAsync 메서드는 먼저 , Connect또는 ConnectAsync 메서드를 호출BeginConnect하여 기본 원격 호스트를 설정하는 경우 연결 없는 프로토콜에도 작동합니다. 연결 없는 프로토콜을 사용하면 파일 크기가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램이 전송 SendPacketsAsync 되지 않고 예외가 SocketException throw됩니다.

메서드는 SendPacketsAsync 사용되는 운영 체제에 따라 최적화됩니다. Windows 서버 버전에서 SendPacketsAsync 메서드는 고성능에 최적화되어 있습니다.

Windows 클라이언트 버전에서 SendPacketsAsync 메서드는 최소 메모리 및 리소스 사용률에 최적화되어 있습니다.

매개 변수의 TransmitFileOptions.UseKernelApc 속성에서 플래그를 SocketAsyncEventArgs.SendPacketsFlagse 사용하면 상당한 성능 이점을 제공할 수 있습니다. 메서드 호출을 SendPacketsAsync 시작하는 스레드가 과도한 계산에 사용되는 경우 해당 APC가 시작되지 않을 수 있습니다. 커널과 사용자 모드 APC 간에는 차이가 있습니다. 스레드가 대기 상태일 때 커널 APC가 시작됩니다. 스레드가 경고 대기 상태일 때 사용자 모드 APC 시작

적용 대상

제품 버전
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

추가 정보