Bagikan melalui


Socket.SendFile Metode

Definisi

Mengirim file dan data opsional secara sinkron ke yang tersambung Socket.

Overload

SendFile(String)

Mengirim file fileName ke objek yang tersambung Socket dengan UseDefaultWorkerThread bendera transmisi.

SendFile(String, Byte[], Byte[], TransmitFileOptions)

Mengirim file fileName dan buffer data ke objek tersambung Socket menggunakan nilai yang ditentukan TransmitFileOptions .

SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)

Mengirim file fileName dan buffer data ke objek tersambung Socket menggunakan nilai yang ditentukan TransmitFileOptions .

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.

Berlaku untuk