步骤
-
创建服务端
- 使用
TcpListener
类创建 TCP 服务端。 - 调用
Start
方法开始监听指定的 IP 地址和端口号。 - 使用
AcceptTcpClient
方法接受客户端的连接请求,并获取与客户端通信的TcpClient
实例。
- 使用
-
创建客户端
- 使用
TcpClient
类创建一个 TCP 客户端。 - 调用
Connect
方法连接到服务端的 IP 地址和端口号,建立与服务端的连接。 - 获取与服务端通信的
NetworkStream
实例。
- 使用
-
服务端发送文件
- 打开要发送的文件并读取其内容。
- 将文件内容写入服务端的
NetworkStream
中,使用Write
方法发送数据。
-
客户端接收文件
- 在客户端的
NetworkStream
上调用Read
方法读取从服务端发送的数据。 - 将接收到的数据写入到本地文件中。
- 在客户端的
代码示例
以下是一个简单的 C# 示例,分别展示了服务端和客户端的代码:
服务端代码
// 服务端
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
class Server
{
static void Main()
{
TcpListener server = new TcpListener(IPAddress.Any, 12345);
server.Start();
using (TcpClient client = server.AcceptTcpClient())
using (NetworkStream stream = client.GetStream())
{
string filePath = "path_to_your_file"; // 替换为实际文件路径
byte[] fileData = File.ReadAllBytes(filePath);
stream.Write(fileData, 0, fileData.Length);
Console.WriteLine("File sent to client.");
}
server.Stop();
}
}
客户端代码
// 客户端
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
class Client
{
static void Main()
{
TcpClient client = new TcpClient("127.0.0.1", 12345);
NetworkStream stream = client.GetStream();
byte[] data = new byte[1024];
using (MemoryStream ms = new MemoryStream())
{
int numBytesRead;
while ((numBytesRead = stream.Read(data, 0, data.Length)) > 0)
{
ms.Write(data, 0, numBytesRead);
}
byte[] receivedData = ms.ToArray();
string filePath = "path_to_save_file"; // 替换为要保存文件的路径
File.WriteAllBytes(filePath, receivedData);
Console.WriteLine("File received from server.");
}
client.Close();
}
}
请替换代码中的 path_to_your_file
和 path_to_save_file
分别为要发送的文件路径和接收后保存的文件路径。
以上示例提供了一个简单的基于 TCP 的文件传输通信的方法。在实际应用中,可能需要考虑更多的错误处理、协议设计和安全性等方面的问题。