Socket.SendFile Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengirim file dan data opsional secara sinkron ke yang tersambung Socket.
Overload
SendFile(String) |
Mengirim file |
SendFile(String, Byte[], Byte[], TransmitFileOptions) |
Mengirim file |
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions) |
Mengirim file |
SendFile(String)
- Sumber:
- Socket.cs
- Sumber:
- Socket.cs
- Sumber:
- Socket.cs
Mengirim file fileName
ke objek yang tersambung Socket dengan UseDefaultWorkerThread bendera transmisi.
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)
Parameter
- fileName
- String
Yang String berisi jalur dan nama file yang akan dikirim. Parameter ini dapat berupa null
.
Pengecualian
Soket tidak terhubung ke host jarak jauh.
Objek Socket telah ditutup.
Objek Socket tidak dalam mode pemblokiran dan tidak dapat menerima panggilan sinkron ini.
File fileName
tidak ditemukan.
Terjadi kesalahan saat mencoba mengakses soket.
Contoh
Contoh kode berikut membuat dan menyambungkan soket lalu mengirim file ke host jarak jauh. File "test.txt" terletak di direktori akar komputer lokal.
// 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();
Keterangan
Kelebihan beban ini mengirimkan file fileName
ke soket yang terhubung. Parameter flags
default ke UseDefaultWorkerThread (0), dan preBuffer
parameter dan postBuffer
default ke null
. Jika fileName
berada di direktori lokal, itu dapat diidentifikasi hanya dengan nama file; jika tidak, jalur lengkap dan nama file harus ditentukan. Kartubebas (".. nama berbagi \\myfile.txt") dan UNC ("\\\shared directory\\myfile.txt") didukung. Jika file tidak ditemukan, pengecualian FileNotFoundException akan dilemparkan.
Metode ini menggunakan fungsi yang TransmitFile
ditemukan di WINDOWS Sockets 2 API. Untuk informasi selengkapnya tentang TransmitFile
fungsi dan benderanya, lihat dokumentasi Windows Sockets .
SendFile secara sinkron mengirim file ke host jarak jauh yang ditentukan dalam Connect metode atau Accept . SendFile dapat digunakan untuk berorientasi koneksi dan untuk protokol tanpa koneksi.
Jika Anda menggunakan protokol tanpa koneksi, Anda harus memanggil Connect sebelum memanggil metode ini, jika tidak SendFile akan melemparkan SocketException pengecualian. Jika Anda menggunakan protokol berorientasi koneksi, Anda harus menggunakan Connect untuk membuat koneksi host jarak jauh atau menggunakan Accept untuk menerima koneksi masuk.
Jika Anda menggunakan protokol berorientasi koneksi, SendFile blokir hingga file dikirim. Dalam mode nonblocking, SendFile mungkin berhasil diselesaikan sebelum seluruh file dikirim. Tidak ada jaminan bahwa data yang Anda kirim akan segera muncul di jaringan. Untuk meningkatkan efisiensi jaringan, sistem yang mendasar dapat menunda transmisi sampai sejumlah besar data keluar dikumpulkan. Penyelesaian metode yang SendFile berhasil berarti bahwa sistem yang mendasar telah memiliki ruang untuk menyangga data Anda untuk pengiriman jaringan.
Catatan
Jika Anda menerima SocketException, gunakan SocketException.ErrorCode properti untuk mendapatkan kode kesalahan tertentu. Setelah Anda mendapatkan kode ini, lihat dokumentasi kode kesalahan API Windows Sockets versi 2 untuk deskripsi terperinci tentang kesalahan tersebut.
Catatan
Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.
Berlaku untuk
SendFile(String, Byte[], Byte[], TransmitFileOptions)
- Sumber:
- Socket.cs
- Sumber:
- Socket.cs
- Sumber:
- Socket.cs
Mengirim file fileName
dan buffer data ke objek tersambung Socket menggunakan nilai yang ditentukan TransmitFileOptions .
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)
Parameter
- fileName
- String
Jalur dan nama file yang akan dikirim. Parameter ini dapat berupa null
.
- preBuffer
- Byte[]
Data yang akan dikirim sebelum file dikirim. Parameter ini dapat berupa null
.
- postBuffer
- Byte[]
Data yang akan dikirim setelah file dikirim. Parameter ini dapat berupa null
.
- flags
- TransmitFileOptions
Kombinasi bitwise dari nilai enumerasi yang menentukan bagaimana file ditransfer.
Pengecualian
Sistem operasi bukan Windows NT atau yang lebih baru.
-atau-
Soket tidak terhubung ke host jarak jauh.
Objek Socket telah ditutup.
Objek Socket tidak dalam mode pemblokiran dan tidak dapat menerima panggilan sinkron ini.
File fileName
tidak ditemukan.
Terjadi kesalahan saat mencoba mengakses soket.
Contoh
Contoh kode berikut membuat dan menyambungkan soket. File "test.txt" terletak di direktori akar komputer lokal. Dalam contoh ini, kami membuat prebuffer dan postbuffer data dan mengirimkannya ke host jarak jauh dengan file . TransmitFileOptions Default digunakan.
// 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();
Keterangan
Kelebihan beban ini memerlukan nama file yang ingin Anda kirim dan kombinasi TransmitFileOptions nilai bitwise. Parameter preBuffer
berisi data apa pun yang ingin Anda awali file.
postBuffer
berisi data yang ingin Anda ikuti filenya. Jika fileName
berada di direktori kerja saat ini, itu dapat diidentifikasi hanya dengan nama file; jika tidak, jalur lengkap dan nama file harus ditentukan. Kartubebas (".. nama berbagi \\myfile.txt") dan UNC ("\\\shared directory\\myfile.txt") didukung.
Parameter flags
menyediakan penyedia layanan Window Sockets dengan informasi tambahan tentang transfer file. Untuk informasi selengkapnya tentang cara menggunakan parameter ini, lihat TransmitFileOptions.
Metode ini menggunakan fungsi yang TransmitFile
ditemukan di WINDOWS Sockets 2 API. Untuk informasi selengkapnya tentang TransmitFile
fungsi dan benderanya, lihat dokumentasi Windows Sockets .
SendFile secara sinkron mengirim file ke host jarak jauh yang ditentukan dalam Connect metode atau Accept . SendFile dapat digunakan untuk berorientasi koneksi dan untuk protokol tanpa koneksi.
Jika Anda menggunakan protokol tanpa koneksi, Anda harus memanggil Connect sebelum memanggil metode ini; jika tidak SendFile , melempar SocketException. Jika Anda menggunakan protokol berorientasi koneksi, Anda harus menggunakan Connect untuk membuat koneksi host jarak jauh, atau menggunakan Accept untuk menerima koneksi masuk.
Jika Anda menggunakan protokol berorientasi koneksi, SendFile blokir hingga seluruh file dikirim. Dalam mode nonblocking, SendFile mungkin berhasil diselesaikan sebelum seluruh file dikirim. Tidak ada jaminan bahwa data yang Anda kirim akan segera muncul di jaringan. Untuk meningkatkan efisiensi jaringan, sistem yang mendasar dapat menunda transmisi sampai sejumlah besar data keluar dikumpulkan. Penyelesaian metode yang SendFile berhasil berarti bahwa sistem yang mendasar telah memiliki ruang untuk menyangga data Anda untuk pengiriman jaringan.
Catatan
Jika Anda menerima SocketException, gunakan SocketException.ErrorCode properti untuk mendapatkan kode kesalahan tertentu. Setelah Anda mendapatkan kode ini, lihat dokumentasi kode kesalahan API Windows Sockets versi 2 untuk deskripsi terperinci tentang kesalahan tersebut.
Catatan
Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.
Berlaku untuk
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)
- Sumber:
- Socket.cs
- Sumber:
- Socket.cs
- Sumber:
- Socket.cs
Mengirim file fileName
dan buffer data ke objek tersambung Socket menggunakan nilai yang ditentukan TransmitFileOptions .
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)
Parameter
- fileName
- String
Yang String berisi jalur dan nama file yang akan dikirim. Parameter ini dapat berupa null
.
- preBuffer
- ReadOnlySpan<Byte>
Yang ReadOnlySpan<T> berisi data yang akan dikirim sebelum file dikirim. Buffer ini bisa kosong.
- postBuffer
- ReadOnlySpan<Byte>
ReadOnlySpan<T> Yang berisi data yang akan dikirim setelah file dikirim. Buffer ini bisa kosong.
- flags
- TransmitFileOptions
Satu atau beberapa TransmitFileOptions nilai.
Pengecualian
Objek Socket telah ditutup.
Objek Socket tidak tersambung ke host jarak jauh.
Objek Socket tidak dalam mode pemblokiran dan tidak dapat menerima panggilan sinkron ini.
File fileName
tidak ditemukan.
Terjadi kesalahan saat mencoba mengakses soket.