Socket.SendFile 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.
Bağlı Socketbir öğesine bir dosya ve isteğe bağlı verileri zaman uyumlu olarak gönderir.
Aşırı Yüklemeler
SendFile(String) |
Dosyayı |
SendFile(String, Byte[], Byte[], TransmitFileOptions) |
Belirtilen TransmitFileOptions değeri kullanarak dosyayı |
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions) |
Belirtilen TransmitFileOptions değeri kullanarak dosyayı |
SendFile(String)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Dosyayı fileName
iletim bayrağıyla bağlı Socket bir nesneye UseDefaultWorkerThread gönderir.
public:
void SendFile(System::String ^ fileName);
public void SendFile (string fileName);
public void SendFile (string? fileName);
member this.SendFile : string -> unit
Public Sub SendFile (fileName As String)
Parametreler
- fileName
- String
String Gönderilecek dosyanın yolunu ve adını içeren bir. Bu parametre olabilir null
.
Özel durumlar
Yuva uzak bir konağa bağlı değil.
Nesne Socket kapatıldı.
Socket Nesne engelleme modunda değil ve bu zaman uyumlu çağrıyı kabul edemiyor.
Dosya fileName
bulunamadı.
Yuvaya erişmeye çalışılırken bir hata oluştu.
Örnekler
Aşağıdaki kod örneği bir yuva oluşturup bağlar ve ardından uzak konağa bir dosya gönderir. "test.txt" dosyası yerel makinenin kök dizininde bulunur.
// Establish the local endpoint for the socket.
IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );
// Create a TCP socket.
Socket^ client = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
// Connect the socket to the remote endpoint.
client->Connect( ipEndPoint );
// There is a text file test.txt located in the root directory.
String^ fileName = "C:\\test.txt";
// Send file fileName to remote device
Console::WriteLine( "Sending {0} to the host.", fileName );
client->SendFile( fileName );
// Release the socket.
client->Shutdown( SocketShutdown::Both );
client->Close();
// Establish the local endpoint for the socket.
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
// Create a TCP socket.
Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// Connect the socket to the remote endpoint.
client.Connect(ipEndPoint);
// There is a text file test.txt located in the root directory.
string fileName = "C:\\test.txt";
// Send file fileName to remote device
Console.WriteLine("Sending {0} to the host.", fileName);
client.SendFile(fileName);
// Release the socket.
client.Shutdown(SocketShutdown.Both);
client.Close();
Açıklamalar
Bu aşırı yükleme, dosyayı fileName
bağlı yuvaya gönderir.
flags
parametresi varsayılan olarak UseDefaultWorkerThread (0) ve preBuffer
ve postBuffer
parametreleri varsayılan olarak null
kullanılır. 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.
Bu yöntem, TransmitFile
Windows Sockets 2 API'sinde bulunan işlevi kullanır. İşlev ve bayrakları hakkında TransmitFile
daha fazla bilgi için Windows Yuvaları belgelerine bakın.
SendFile veya yönteminde ConnectAccept belirtilen uzak konağa zaman uyumlu olarak bir dosya gönderir. SendFile hem bağlantı odaklı hem de bağlantısız protokoller için kullanılabilir.
Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect , aksi takdirde SendFile bir SocketException özel durum oluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için veya Connect gelen bağlantıyı kabul etmek için komutunu kullanmanız Accept gerekir.
Bağlantı odaklı bir protokol kullanıyorsanız, SendFile dosya gönderilene kadar engeller. Engelleyici olmayan modda, SendFile dosyanın tamamı gönderilmeden önce başarıyla tamamlanabilir. Gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için, temel alınan sistem önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin SendFile başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.
Not
bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.
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.
Şunlara uygulanır
SendFile(String, Byte[], Byte[], TransmitFileOptions)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Belirtilen TransmitFileOptions değeri kullanarak dosyayı fileName
ve veri arabelleklerini bağlı Socket bir nesneye gönderir.
public:
void SendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags);
public void SendFile (string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags);
public void SendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags);
member this.SendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions -> unit
Public Sub SendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions)
Parametreler
- fileName
- String
Gönderilecek dosyanın yolu ve adı. 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
Dosyanın nasıl aktarıldığını belirten numaralandırma değerlerinin bit düzeyinde birleşimi.
Özel durumlar
İşletim sistemi Windows NT veya sonraki sürümlerde değil.
-veya-
Yuva uzak bir konağa bağlı değil.
Nesne Socket kapatıldı.
Socket Nesne engelleme modunda değil ve bu zaman uyumlu çağrıyı kabul edemiyor.
Dosya fileName
bulunamadı.
Yuvaya erişmeye çalışılırken bir hata oluştu.
Örnekler
Aşağıdaki kod örneği bir yuva oluşturur ve bağlar. "test.txt" dosyası yerel makinenin kök dizininde bulunur. Bu örnekte, verilerin ön yüklemesini ve postbuffer'ını oluşturup bunları dosyayla birlikte uzak ana bilgisayara göndereceğiz. Varsayılan TransmitFileOptions değer kullanılır.
// Establish the local endpoint for the socket.
IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );
// Create a TCP socket.
Socket^ client = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
// Connect the socket to the remote endpoint.
client->Connect( ipEndPoint );
// Send file fileName to the remote host with preBuffer and postBuffer data.
// There is a text file test.txt located in the root directory.
String^ fileName = "C:\\test.txt";
// Create the preBuffer data.
String^ string1 = String::Format( "This is text data that precedes the file.{0}", Environment::NewLine );
array<Byte>^preBuf = Encoding::ASCII->GetBytes( string1 );
// Create the postBuffer data.
String^ string2 = String::Format( "This is text data that will follow the file.{0}", Environment::NewLine );
array<Byte>^postBuf = Encoding::ASCII->GetBytes( string2 );
//Send file fileName with buffers and default flags to the remote device.
Console::WriteLine( "Sending {0} with buffers to the host.{1}", fileName, Environment::NewLine );
client->SendFile( fileName, preBuf, postBuf, TransmitFileOptions::UseDefaultWorkerThread );
// Release the socket.
client->Shutdown( SocketShutdown::Both );
client->Close();
// Establish the local endpoint for the socket.
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
// Create a TCP socket.
Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// Connect the socket to the remote endpoint.
client.Connect(ipEndPoint);
// Send file fileName to the remote host with preBuffer and postBuffer data.
// There is a text file test.txt located in the root directory.
string fileName = "C:\\test.txt";
// Create the preBuffer data.
string string1 = String.Format("This is text data that precedes the file.{0}", Environment.NewLine);
byte[] preBuf = Encoding.ASCII.GetBytes(string1);
// Create the postBuffer data.
string string2 = String.Format("This is text data that will follow the file.{0}", Environment.NewLine);
byte[] postBuf = Encoding.ASCII.GetBytes(string2);
//Send file fileName with buffers and default flags to the remote device.
Console.WriteLine("Sending {0} with buffers to the host.{1}", fileName, Environment.NewLine);
client.SendFile(fileName, preBuf, postBuf, TransmitFileOptions.UseDefaultWorkerThread);
// Release the socket.
client.Shutdown(SocketShutdown.Both);
client.Close();
Açıklamalar
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. Geçerli çalışma dizinindeyse 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.
parametresi, flags
Pencere Yuvaları hizmet sağlayıcısına dosya aktarımı hakkında ek bilgiler sağlar. Bu parametreyi kullanma hakkında daha fazla bilgi için bkz TransmitFileOptions. .
Bu yöntem, TransmitFile
Windows Sockets 2 API'sinde bulunan işlevi kullanır. İşlev ve bayrakları hakkında TransmitFile
daha fazla bilgi için Windows Yuvaları belgelerine bakın.
SendFile veya yönteminde ConnectAccept belirtilen uzak konağa zaman uyumlu olarak bir dosya gönderir. SendFile hem bağlantı odaklı hem de bağlantısız protokoller için kullanılabilir.
Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect ; aksi takdirde SendFile bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için veya Connect gelen bağlantıyı kabul etmek için komutunu kullanmanız Accept gerekir.
Bağlantı odaklı bir protokol kullanıyorsanız, SendFile dosyanın tamamı gönderilene kadar engeller. Engelleyici olmayan modda, SendFile dosyanın tamamı gönderilmeden önce başarıyla tamamlanabilir. Gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için, temel alınan sistem önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin SendFile başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.
Not
bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.
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.
Şunlara uygulanır
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Belirtilen TransmitFileOptions değeri kullanarak dosyayı fileName
ve veri arabelleklerini bağlı Socket bir nesneye gönderir.
public:
void SendFile(System::String ^ fileName, ReadOnlySpan<System::Byte> preBuffer, ReadOnlySpan<System::Byte> postBuffer, System::Net::Sockets::TransmitFileOptions flags);
public void SendFile (string? fileName, ReadOnlySpan<byte> preBuffer, ReadOnlySpan<byte> postBuffer, System.Net.Sockets.TransmitFileOptions flags);
member this.SendFile : string * ReadOnlySpan<byte> * ReadOnlySpan<byte> * System.Net.Sockets.TransmitFileOptions -> unit
Public Sub SendFile (fileName As String, preBuffer As ReadOnlySpan(Of Byte), postBuffer As ReadOnlySpan(Of Byte), flags As TransmitFileOptions)
Parametreler
- fileName
- String
String Gönderilecek dosyanın yolunu ve adını içeren bir. Bu parametre olabilir null
.
- preBuffer
- ReadOnlySpan<Byte>
ReadOnlySpan<T> Dosya gönderilmeden önce gönderilecek verileri içeren bir. Bu arabellek boş olabilir.
- postBuffer
- ReadOnlySpan<Byte>
ReadOnlySpan<T> Dosya gönderildikten sonra gönderilecek verileri içeren bir. Bu arabellek boş olabilir.
- flags
- TransmitFileOptions
Bir veya daha fazla TransmitFileOptions değer.
Özel durumlar
Nesne Socket kapatıldı.
Nesne Socket uzak bir konağa bağlı değil.
Socket Nesne engelleme modunda değil ve bu zaman uyumlu çağrıyı kabul edemiyor.
Dosya fileName
bulunamadı.
Yuvaya erişmeye çalışılırken bir hata oluştu.