Aracılığıyla paylaş


Socket.BeginSendFile Yöntem

Tanım

Bir dosyayı bağlı Socket bir nesneye zaman uyumsuz olarak gönderir.

Aşırı Yüklemeler

BeginSendFile(String, AsyncCallback, Object)

bayrağını kullanarak dosyayı fileName bağlı Socket bir nesneye UseDefaultWorkerThread gönderir.

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.

Şunlara uygulanır