C# 实现简单的TCP文件传输通信

步骤

  1. 创建服务端

    • 使用 TcpListener 类创建 TCP 服务端。
    • 调用 Start 方法开始监听指定的 IP 地址和端口号。
    • 使用 AcceptTcpClient 方法接受客户端的连接请求,并获取与客户端通信的 TcpClient 实例。
  2. 创建客户端

    • 使用 TcpClient 类创建一个 TCP 客户端。
    • 调用 Connect 方法连接到服务端的 IP 地址和端口号,建立与服务端的连接。
    • 获取与服务端通信的 NetworkStream 实例。
  3. 服务端发送文件

    • 打开要发送的文件并读取其内容。
    • 将文件内容写入服务端的 NetworkStream 中,使用 Write 方法发送数据。
  4. 客户端接收文件

    • 在客户端的 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_filepath_to_save_file 分别为要发送的文件路径和接收后保存的文件路径。

以上示例提供了一个简单的基于 TCP 的文件传输通信的方法。在实际应用中,可能需要考虑更多的错误处理、协议设计和安全性等方面的问题。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RoyLee0826

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值