Android实现TCP断点上传 后台C#服务接收

yizhihongxing

服务端C#代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace TcpServerDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpListener tcpListener = new TcpListener(System.Net.IPAddress.Parse("127.0.0.1"), 9999);
            tcpListener.Start();
            Console.WriteLine("服务端开始监听.....");
            while (true)
            {
                var client = tcpListener.AcceptTcpClient();
                var endpoint = client.Client.RemoteEndPoint.ToString();
                Console.WriteLine(endpoint + "已连接服务端");
                byte[] buffer = new byte[1024];
                int len = client.Client.Receive(buffer);
                Console.WriteLine("接收长度为:" + len);
                string str = Encoding.UTF8.GetString(buffer, 0, len);
                Console.WriteLine("接收到数据为:" + str);
            }
        }
    }
}

客户端Android代码示例:

import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class MainActivity extends AppCompatActivity {
    //上传文件
    private void uploadFile(String host, int port, String path, String fileName, long startPosition) {
        Socket socket = null;
        OutputStream outputStream = null;
        FileInputStream fileInputStream = null;
        try {
            socket = new Socket(InetAddress.getByName(host), port);
            outputStream = socket.getOutputStream();
            fileInputStream = new FileInputStream(new File(path, fileName));
            long skipSize = fileInputStream.skip(startPosition);
            Log.d("Socket", "跳过长度为:" + skipSize);
            byte[] buffer = new byte[1024 * 1024];
            int len = 0;
            while ((len = fileInputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, len);
            }
            outputStream.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (outputStream != null) {
                    outputStream.close();
                }
                if (fileInputStream != null) {
                    fileInputStream.close();
                }
                if (socket != null) {
                    socket.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

实现TCP断点上传后台C#服务接收的完整攻略:

1.服务端开启TCP监听:在服务端上编写监听端口的代码,等待客户端连接。

2.客户端进行TCP连接:使用Socket进行服务端连接并跳过已经上传的文件内容。

3.客户端将需要上传的文件进行分块:由于文件可能非常大,所以需要将文件按照固定大小进行分块,同时记录已经上传的位置,便于下次上传时进行文件位置的跳过。

4.客户端将分块的文件上传到服务端:使用Socket传输分块后的文件数据。

5.服务端接收到数据并存储:服务端接收到客户端传输的数据并进行存储,同时对于已经存储的数据进行断点判断,便于下次接收继续添加。

6.客户端继续上传:如果客户端判断还有未上传完的数据,则继续进行分块上传,避免重复上传数据。

代码示例1:服务端C#代码

代码示例2:客户端Android代码

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android实现TCP断点上传 后台C#服务接收 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • c#反射调用方法示例

    以下是“C#反射调用方法示例”的完整攻略。 什么是反射 在 C# 中,反射是指通过元数据来检查和访问程序集、类型、字段、方法和属性等成员的一种机制。通过反射,我们可以在运行时获取一个对象的类型并操作它;也可以动态地创建类型、调用成员等。C# 反射机制中最常用的类和接口是 System.Reflection 和 System.Type。 反射调用方法示例 下面…

    C# 2023年5月31日
    00
  • ASP.NET Core选项接口介绍

    ASP.NET Core选项接口介绍 ASP.NET Core选项接口是一种用于管理应用程序配置的机制。它允许我们将应用程序配置分离出来,并将其存储在一个或多个配置源中。本攻略将详细介绍ASP.NET Core选项接口的概念、用法和示例。 什么是选项接口? 选项接口是一种用于管理应用程序配置的机制。它允许我们将应用程序配置分离出来,并将其存储在一个或多个配置…

    C# 2023年5月16日
    00
  • C# 文件上传下载(Excel导入,多线程下载)功能的实现代码

    下面是C#文件上传下载(Excel导入,多线程下载)功能的实现攻略。整个攻略分为如下几个部分,请仔细阅读: 部分1:文件上传 步骤1:前端页面 首先,我们需要在前端页面上添加一个文件上传表单,让用户可以选择需要上传的文件。可以使用以下代码: <form method="post" action="UploadFile&qu…

    C# 2023年6月7日
    00
  • asp.net 页面回跳实现代码

    ASP.NET页面回跳是指在页面上执行一些操作后,跳转到另一个页面。在ASP.NET中,我们可以通过Response.Redirect()方法实现页面回跳。下面是实现页面回跳的步骤和代码示例。 步骤 在需要执行页面回跳的位置,使用Response.Redirect()方法。该方法的参数可以是相对路径或绝对路径。 在接收回跳的页面中,处理接收到的信息。 示例1…

    C# 2023年5月31日
    00
  • 详解将ASP.NET Core应用程序部署至生产环境中(CentOS7)

    详解将ASP.NET Core应用程序部署至生产环境中(CentOS7) 在本攻略中,我们将深入讲解如何将ASP.NET Core应用程序部署至生产环境中的CentOS7服务器,并提供两个示例说明。 准备工作 在开始部署ASP.NET Core应用程序之前,您需要完成以下准备工作: 在CentOS7服务器上安装.NET Core运行时环境。 sudo rpm…

    C# 2023年5月17日
    00
  • .NET Core简单读取json配置文件

    .NET Core简单读取json配置文件 在.NET Core应用程序中,我们可以使用json配置文件来存储应用程序的配置信息。本攻略将详细介绍如何在.NET Core中读取json配置文件。 创建json配置文件 首先,我们需要创建一个json配置文件。我们可以使用以下代码来创建一个名为appsettings.json的json配置文件: { &quot…

    C# 2023年5月17日
    00
  • C# 给PPT中的图表添加趋势线的方法

    针对 C# 给 PPT 中的图表添加趋势线的方法,我将为您提供完整的攻略。 步骤一:获取 PowerPoint 对象 首先,我们需要获取 PowerPoint 对象以进行后续操作。在 C# 中获取 PowerPoint 对象的方式有多种,其中一种方式是使用 Microsoft.Office.Interop.PowerPoint 库,该库可以用于与 Power…

    C# 2023年6月3日
    00
  • C#基于TCP实现简单游戏客户端的完整实例

    下面我将为你详细讲解基于TCP实现简单游戏客户端的完整攻略。 一、前置准备 在开始实现前需要做以下几个准备工作: 安装并配置好C#程序开发环境,比如Visual Studio等。 确认游戏协议,即确定游戏客户端和服务器之间的通信方式和数据格式,一般采用二进制流。 确认游戏场景和角色设定,确定游戏客户端和服务器需要交互的数据类型和具体实现方式。 熟悉Socke…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部