c# 服务端向客户端 传输文件
时间: 2023-11-11 08:07:04 浏览: 168
在C#中,可以使用Socket来实现服务端向客户端传输文件。
首先,在服务端创建一个Socket对象,并指定IPAddress和端口号。然后,使用Socket.Accept()方法等待客户端连接。一旦客户端连接成功,就可以通过Socket.SendFile()方法将文件发送给客户端。
以下是一个简单的示例代码:
```csharp
// 服务端代码
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int portNumber = 12345;
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(ipAddress, portNumber));
serverSocket.Listen(1);
Console.WriteLine("等待客户端连接...");
Socket clientSocket = serverSocket.Accept();
Console.WriteLine("客户端已连接");
string filePath = @"C:\test.txt";
SocketError errorCode;
clientSocket.SendFile(filePath, null, null, TransmitFileOptions.UseDefaultWorkerThread, out errorCode);
if (errorCode != SocketError.Success)
{
Console.WriteLine("发送失败,错误代码:{0}", errorCode);
}
else
{
Console.WriteLine("发送成功");
}
// 关闭连接
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
serverSocket.Close();
```
客户端代码如下:
```csharp
// 客户端代码
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int portNumber = 12345;
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(ipAddress, portNumber));
Console.WriteLine("连接成功");
byte[] buffer = new byte[1024];
int bytesReceived = clientSocket.Receive(buffer);
string message = Encoding.ASCII.GetString(buffer, 0, bytesReceived);
Console.WriteLine("收到消息:{0}", message);
// 关闭连接
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
```
在上面的示例中,服务端将文件发送给客户端,客户端接收到文件后会显示收到消息。你可以根据自己的需求对代码进行修改。
阅读全文