Socket.BeginSendFile Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir dosyayı bağlı Socket bir nesneye zaman uyumsuz olarak gönderir.
Aşırı Yüklemeler
BeginSendFile(String, AsyncCallback, Object) |
bayrağını kullanarak dosyayı |
BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object) |
Bağlı Socket bir nesneye zaman uyumsuz olarak bir dosya ve veri arabellekleri gönderir. |
BeginSendFile(String, AsyncCallback, Object)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
bayrağını kullanarak dosyayı fileName
bağlı Socket bir nesneye UseDefaultWorkerThread gönderir.
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
Parametreler
- fileName
- String
Gönderilecek dosyanın yolunu ve adını içeren dize. Bu parametre olabilir null
.
- callback
- AsyncCallback
Temsilci AsyncCallback .
- state
- Object
Bu istek için durum bilgilerini içeren bir nesne.
Döndürülenler
IAsyncResult Zaman uyumsuz göndermeyi temsil eden bir nesne.
Özel durumlar
Socket Nesne kapatıldı.
Yuva uzak bir konağa bağlı değil.
Dosya fileName
bulunamadı.
Yalnızca .NET Framework ve .NET 5 ve öncesi: Yuvaya erişmeye çalışılırken bir hata oluştu. Aşağıdaki açıklamalar bölümüne bakın.
Açıklamalar
Önemli
Bu bir uyumluluk API'sidir. Yeni geliştirme için APM (Begin*
ve End*
) yöntemlerini kullanmanızı önermiyoruz. Bunun yerine tabanlı eşdeğerleri kullanın Task
.
Bu aşırı yükleme, dosyayı fileName
yuva üzerinden gönderir. Yerel dizindeyse fileName
, yalnızca dosyanın adıyla tanımlanabilir; aksi takdirde, dosyanın tam yolu ve adı belirtilmelidir. Joker karakterler (".. \\myfile.txt") ve UNC paylaşım adları ("\\\\paylaşılan directory\\myfile.txt") desteklenir. Dosya bulunamazsa, özel durum FileNotFoundException oluşturulur.
İşlemin AsyncCallbackBeginSendFile tamamlanması hakkında bildirim almak için uygulamasına uygulanan bir geri çağırma geçirebilirsiniz. Temel alınan ağ yığını işlemi zaman uyumlu bir şekilde tamamlarsa, çağrısı sırasında geri çağırmanın BeginSendFilesatır içinde yürütüleceğini unutmayın. Bu durumda, döndürülen IAsyncResult üzerindeki özelliği yöntemin CompletedSynchronously zaman uyumlu olarak tamamlandığını belirtmek için olarak ayarlanırtrue
. yöntemine AsyncState geçirilen durum nesnesini almak için BeginSendFile özelliğini IAsyncResult kullanın.
İşlemin BeginSendFile yöntemi çağrılarak EndSendFile tamamlanması gerekir. Genellikle, yöntemi temsilci tarafından çağrılır AsyncCallback . EndSendFile işlem tamamlanana kadar çağıran iş parçacığını engeller.
Bağlantı odaklı protokoller için tasarlanmış olsa da, BeginSendFile ilk olarak veya yöntemini çağırarak ConnectBeginConnect varsayılan uzak konağı kurmanız koşuluyla bağlantısız protokoller için de çalışır. Bağlantısız protokollerde, dosyanızın boyutunun temel alınan hizmet sağlayıcısının paket boyutu üst sınırını aşmadığından emin olmanız gerekir. Gönderiliyorsa, veri birimi gönderilmez ve BeginSendFile bir SocketException özel durum oluşturur.
Not
Özel durum alırsanız, belirli bir SocketException hata kodunu almak için özelliğini kullanın SocketException.ErrorCode .
Not
Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.
Not
Yürütme bağlamı (güvenlik bağlamı, kimliğine bürünülen kullanıcı ve çağırma bağlamı) zaman uyumsuz Socket yöntemler için önbelleğe alınır. Belirli bir bağlamın (belirli bir zaman uyumsuz Socket yöntem, belirli bir örnek ve belirli Socket bir geri çağırma) ilk kullanımından sonra, bu bağlamın sonraki kullanımları bir performans geliştirmesi görecektir.
Şunlara uygulanır
BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Bağlı Socket bir nesneye zaman uyumsuz olarak bir dosya ve veri arabellekleri gönderir.
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
Parametreler
- fileName
- String
Gönderilecek dosyanın yolunu ve adını içeren bir dize. Bu parametre olabilir null
.
- preBuffer
- Byte[]
Dosya gönderilmeden önce gönderilecek veriler. Bu parametre olabilir null
.
- postBuffer
- Byte[]
Dosya gönderildikten sonra gönderilecek veriler. Bu parametre olabilir null
.
- flags
- TransmitFileOptions
Numaralandırma değerlerinin bit düzeyinde bir birleşimi.
- callback
- AsyncCallback
AsyncCallback Bu işlem tamamlandığında çağrılacak bir temsilci. Bu parametre olabilir null
.
- state
- Object
Bu istek için durum bilgilerini içeren kullanıcı tanımlı bir nesne. Bu parametre olabilir null
.
Döndürülenler
IAsyncResult Zaman uyumsuz işlemi temsil eden bir nesne.
Özel durumlar
Socket Nesne kapatıldı.
Yalnızca .NET Framework ve .NET 5 ve öncesi: Yuvaya erişmeye çalışılırken bir hata oluştu. Aşağıdaki açıklamalar bölümüne bakın.
İşletim sistemi Windows NT veya üzeri değil.
-veya-
Yuva uzak bir konağa bağlı değil.
Dosya fileName
bulunamadı.
Açıklamalar
Önemli
Bu bir uyumluluk API'sidir. Yeni geliştirme için APM (Begin*
ve End*
) yöntemlerini kullanmanızı önermiyoruz. Bunun yerine tabanlı eşdeğerleri kullanın Task
.
Bu aşırı yükleme, göndermek istediğiniz dosyanın adını ve değerlerin bit düzeyinde bir bileşimini TransmitFileOptions gerektirir. parametresi, preBuffer
dosyadan önce getirmek istediğiniz tüm verileri içerir.
postBuffer
, dosyayı izlemek istediğiniz verileri içerir. Yerel dizindeyse fileName
, yalnızca dosyanın adıyla tanımlanabilir; aksi takdirde, dosyanın tam yolu ve adı belirtilmelidir. Joker karakterler (".. \\myfile.txt") ve UNC paylaşım adları ("\\\\paylaşılan directory\\myfile.txt") desteklenir. Dosya bulunamazsa, özel durum FileNotFoundException oluşturulur.
flags
parametresi, dosya aktarımı hakkında ek bilgi sağlar. Bu parametreyi kullanma hakkında daha fazla bilgi için bkz TransmitFileOptions. .
İşlemin AsyncCallbackBeginSendFile tamamlanması hakkında bildirim almak için uygulamasına uygulanan bir geri çağırma geçirebilirsiniz. Temel alınan ağ yığını işlemi zaman uyumlu bir şekilde tamamlarsa, çağrısı sırasında geri çağırmanın BeginSendFilesatır içinde yürütüleceğini unutmayın. Bu durumda, döndürülen IAsyncResult üzerindeki özelliği yöntemin CompletedSynchronously zaman uyumlu olarak tamamlandığını belirtmek için olarak ayarlanırtrue
. yöntemine AsyncState geçirilen durum nesnesini almak için BeginSendFile özelliğini IAsyncResult kullanın.
İşlemin BeginSendFile yöntemi çağrılarak EndSendFile tamamlanması gerekir. Yöntem genellikle sağlanan AsyncCallback temsilci tarafından çağrılır. EndSendFile işlem tamamlanana kadar çağıran iş parçacığını engeller.
Bağlantı odaklı protokoller için tasarlanmış olsa da, BeginSendFile ilk olarak veya yöntemini çağırarak ConnectBeginConnect varsayılan uzak konağı kurmanız koşuluyla bağlantısız protokoller için de çalışır. Bağlantısız protokollerde, dosyanızın boyutunun temel alınan hizmet sağlayıcısının paket boyutu üst sınırını aşmadığından emin olmanız gerekir. Gönderiliyorsa, veri birimi gönderilmez ve BeginSendFile bir SocketException özel durum oluşturur.
Not
Özel durum alırsanız, belirli bir SocketException hata kodunu almak için özelliğini kullanın SocketException.ErrorCode .
Not
Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.
Not
Yürütme bağlamı (güvenlik bağlamı, kimliğine bürünülen kullanıcı ve çağırma bağlamı) zaman uyumsuz Socket yöntemler için önbelleğe alınır. Belirli bir bağlamın (belirli bir zaman uyumsuz Socket yöntem, belirli bir örnek ve belirli Socket bir geri çağırma) ilk kullanımından sonra, bu bağlamın sonraki kullanımları bir performans geliştirmesi görecektir.