Socket.BeginSendFile Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wysyła plik asynchronicznie do połączonego Socket obiektu.
Przeciążenia
BeginSendFile(String, AsyncCallback, Object) |
Wysyła plik |
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 Task
parametrach .
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 Task
parametrach .
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.