Udostępnij za pośrednictwem


Socket.BeginSendFile Metoda

Definicja

Wysyła plik asynchronicznie do połączonego Socket obiektu.

Przeciążenia

BeginSendFile(String, AsyncCallback, Object)

Wysyła plik fileName do połączonego Socket obiektu przy użyciu flagi UseDefaultWorkerThread .

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Wysyła plik i bufory danych asynchronicznie do połączonego Socket obiektu.

BeginSendFile(String, AsyncCallback, Object)

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła plik fileName do połączonego Socket obiektu przy użyciu flagi UseDefaultWorkerThread .

public:
 IAsyncResult ^ BeginSendFile(System::String ^ fileName, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string? fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback callback, object state);
member this.BeginSendFile : string * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, callback As AsyncCallback, state As Object) As IAsyncResult

Parametry

fileName
String

Ciąg zawierający ścieżkę i nazwę pliku do wysłania. Ten parametr może mieć wartość null.

callback
AsyncCallback

Delegat AsyncCallback .

state
Object

Obiekt zawierający informacje o stanie dla tego żądania.

Zwraca

IAsyncResult Obiekt reprezentujący wysyłanie asynchroniczne.

Wyjątki

Obiekt Socket został zamknięty.

Gniazdo nie jest połączone z hostem zdalnym.

Nie można odnaleźć pliku fileName .

.NET Framework i .NET 5 i starszych tylko: wystąpił błąd podczas próby uzyskania dostępu do gniazda. Zobacz sekcję uwagi poniżej.

Uwagi

Ważne

Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin* i End*) do tworzenia nowych rozwiązań. Zamiast tego należy użyć odpowiedników opartych na Taskparametrach .

To przeciążenie wysyła plik fileName za pośrednictwem gniazda. Jeśli fileName znajduje się w katalogu lokalnym, może zostać zidentyfikowany przy użyciu tylko nazwy pliku. W przeciwnym razie należy określić pełną ścieżkę i nazwę pliku. Symbole wieloznaczne (".. \\myfile.txt") i nazwy udziałów UNC ("\\\\shared directory\\myfile.txt") są obsługiwane. Jeśli plik nie zostanie znaleziony, zostanie zgłoszony wyjątek FileNotFoundException .

Możesz przekazać wywołanie zwrotne implementujące AsyncCallback element , aby BeginSendFile otrzymywać powiadomienia o zakończeniu operacji. Należy pamiętać, że jeśli bazowy stos sieciowy ukończy operację synchronicznie, wywołanie zwrotne zostanie wykonane w tekście podczas wywołania metody BeginSendFile. W takim przypadku właściwość zwrócona IAsyncResult zostanie ustawiona na wartość , aby wskazaćtrue, CompletedSynchronously że metoda została ukończona synchronicznie. AsyncState Użyj właściwości , IAsyncResult aby uzyskać obiekt stanu przekazany do BeginSendFile metody .

Operacja musi zostać ukończona BeginSendFile przez wywołanie EndSendFile metody . Zazwyczaj metoda jest wywoływana przez delegata AsyncCallback . EndSendFile Zablokuje wątek wywołujący do momentu ukończenia operacji.

Chociaż jest przeznaczony dla protokołów zorientowanych na połączenie, BeginSendFile działa również w przypadku protokołów bez połączenia, pod warunkiem, że najpierw wywołasz Connect metodę lub BeginConnect w celu ustanowienia domyślnego hosta zdalnego. W przypadku protokołów bez połączenia należy się upewnić, że rozmiar pliku nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak, datagram nie jest wysyłany i BeginSendFile zgłasza SocketException wyjątek.

Uwaga

Jeśli wystąpi SocketException wyjątek, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu.

Uwaga

Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.

Uwaga

Kontekst wykonywania (kontekst zabezpieczeń, personifikowany użytkownik i kontekst wywołujący) jest buforowany dla metod asynchronicznych Socket . Po pierwszym użyciu określonego kontekstu (konkretnej metody asynchronicznej Socket , określonego wystąpienia i określonego Socket wywołania zwrotnego), kolejne zastosowania tego kontekstu zobaczą poprawę wydajności.

Dotyczy

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła plik i bufory danych asynchronicznie do połączonego Socket obiektu.

public:
 IAsyncResult ^ BeginSendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback callback, object state);
member this.BeginSendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions, callback As AsyncCallback, state As Object) As IAsyncResult

Parametry

fileName
String

Ciąg zawierający ścieżkę i nazwę pliku do wysłania. Ten parametr może mieć wartość null.

preBuffer
Byte[]

Dane do wysłania przed wysłaniem pliku. Ten parametr może mieć wartość null.

postBuffer
Byte[]

Dane do wysłania po wysłaniu pliku. Ten parametr może mieć wartość null.

flags
TransmitFileOptions

Bitowe połączenie wartości wyliczenia.

callback
AsyncCallback

Delegat AsyncCallback , który ma być wywoływany po zakończeniu tej operacji. Ten parametr może mieć wartość null.

state
Object

Obiekt zdefiniowany przez użytkownika, który zawiera informacje o stanie dla tego żądania. Ten parametr może mieć wartość null.

Zwraca

IAsyncResult Obiekt reprezentujący operację asynchroniczną.

Wyjątki

Obiekt Socket został zamknięty.

.NET Framework i .NET 5 i starszych tylko: wystąpił błąd podczas próby uzyskania dostępu do gniazda. Zobacz sekcję uwagi poniżej.

System operacyjny nie jest systemem Windows NT lub nowszym.

-lub-

Gniazdo nie jest połączone z hostem zdalnym.

Nie można odnaleźć pliku fileName .

Uwagi

Ważne

Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin* i End*) do tworzenia nowych rozwiązań. Zamiast tego należy użyć odpowiedników opartych na Taskparametrach .

To przeciążenie wymaga nazwy pliku, który chcesz wysłać, i bitowej kombinacji TransmitFileOptions wartości. Parametr preBuffer zawiera wszystkie dane, które chcesz poprzedzić plikiem. postBuffer zawiera dane, które mają być zgodne z plikiem. Jeśli fileName znajduje się w katalogu lokalnym, może zostać zidentyfikowany przy użyciu tylko nazwy pliku. W przeciwnym razie należy określić pełną ścieżkę i nazwę pliku. Symbole wieloznaczne (".. \\myfile.txt") i nazwy udziałów UNC ("\\\\shared directory\\myfile.txt") są obsługiwane. Jeśli plik nie zostanie znaleziony, zostanie zgłoszony wyjątek FileNotFoundException .

Parametr flags zawiera dodatkowe informacje o transferze plików. Aby uzyskać więcej informacji na temat używania tego parametru, zobacz TransmitFileOptions.

Możesz przekazać wywołanie zwrotne implementujące AsyncCallback element , aby BeginSendFile otrzymywać powiadomienia o zakończeniu operacji. Należy pamiętać, że jeśli bazowy stos sieciowy ukończy operację synchronicznie, wywołanie zwrotne zostanie wykonane w tekście podczas wywołania metody BeginSendFile. W takim przypadku właściwość zwrócona IAsyncResult zostanie ustawiona na wartość , aby wskazaćtrue, CompletedSynchronously że metoda została ukończona synchronicznie. AsyncState Użyj właściwości , IAsyncResult aby uzyskać obiekt stanu przekazany do BeginSendFile metody .

Operacja musi zostać ukończona BeginSendFile przez wywołanie EndSendFile metody . Zazwyczaj metoda jest wywoływana przez dostarczonego AsyncCallback delegata. EndSendFile Zablokuje wątek wywołujący do momentu ukończenia operacji.

Chociaż jest przeznaczony dla protokołów zorientowanych na połączenie, BeginSendFile działa również w przypadku protokołów bez połączenia, pod warunkiem, że najpierw wywołasz Connect metodę lub BeginConnect w celu ustanowienia domyślnego hosta zdalnego. W przypadku protokołów bez połączenia należy się upewnić, że rozmiar pliku nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak, datagram nie jest wysyłany i BeginSendFile zgłasza SocketException wyjątek.

Uwaga

Jeśli wystąpi SocketException wyjątek, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu.

Uwaga

Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.

Uwaga

Kontekst wykonywania (kontekst zabezpieczeń, personifikowany użytkownik i kontekst wywołujący) jest buforowany dla metod asynchronicznych Socket . Po pierwszym użyciu określonego kontekstu (konkretnej metody asynchronicznej Socket , określonego wystąpienia i określonego Socket wywołania zwrotnego), kolejne zastosowania tego kontekstu zobaczą poprawę wydajności.

Dotyczy