Socket.SendFile Method (String)

Sends the file fileName to a connected Socket object with the UseDefaultWorkerThread transmit flag.

Namespace:  System.Net.Sockets
Assembly:  System (in System.dll)

public void SendFile(
	string fileName
)

Parameters

fileName
Type: System.String

A String that contains the path and name of the file to be sent. This parameter can be null.

ExceptionCondition
NotSupportedException

The socket is not connected to a remote host.

ObjectDisposedException

The Socket object has been closed.

InvalidOperationException

The Socket object is not in blocking mode and cannot accept this synchronous call.

FileNotFoundException

The file fileName was not found.

SocketException

An error occurred when attempting to access the socket. See the Remarks section for more information.

This overload sends the file fileName to the connected socket. The flags parameter defaults to UseDefaultWorkerThread (0), and the preBuffer and postBuffer parameters default to null. If fileName is in the local directory, it may be identified with just the name of the file; otherwise, the full path and name of the file must be specified. Wildcards ("..\\myfile.txt") and UNC share names ("\\\\shared directory\\myfile.txt") are supported. If the file is not found, the exception FileNotFoundException is thrown.

This method uses the TransmitFile function found in the Windows Sockets 2 API. For more information about the TransmitFile function and its flags, see the Windows Sockets documentation in the MSDN Library.

SendFile synchronously sends a file to the remote host specified in the Connect or Accept method. SendFile can be used for both connection-oriented and for connectionless protocols.

If you are using a connectionless protocol, you must call Connect before calling this method, otherwise SendFile throws a SocketException exception. If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection or use Accept to accept an incoming connection.

If you are using a connection-oriented protocol, SendFile blocks until the file is sent. In nonblocking mode, SendFile may complete successfully before the entire file has been sent. There is no guarantee that the data you send will appear on the network immediately. To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. A successful completion of the SendFile method means that the underlying system has had room to buffer your data for a network send.

NoteNote:

If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error.

NoteNote:

This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing.

The following code example creates and connects a socket and then sends a file to the remote host. The file "test.txt" is located in the root directory of the local machine.

// 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();
// Establish the local endpoint for the socket.
IPHostEntry* ipHost = Dns::Resolve(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 = S"C:\\test.txt";

// Send file fileName to remote device
Console::WriteLine(S"Sending {0} to the host.", fileName);
client->SendFile(fileName);

// Release the socket.
client->Shutdown(SocketShutdown::Both);
client->Close();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft