1、 先创建一个Java实现了Serializable接口的类FilePojo,代码如下:
// 必须实现Serializable接口。否则无法调用ObjectOutputStream的
// writeObject方法,或者ObjectInputStream中的readObject方法
public class FilePojo implements Serializable
{
private static final long serialVersionUID = 1L;
private String fileName; // 文件名称
private long fileLength; // 文件长度
private byte[] fileContent; // 文件内容
public String getFileName()
{
return fileName;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
public long getFileLength()
{
return fileLength;
}
public void setFileLength(long fileLength)
{
this.fileLength = fileLength;
}
public byte[] getFileContent()
{
return fileContent;
}
public void setFileContent(byte[] fileContent)
{
this.fileContent = fileContent;
}
}
这个类将在服务器端和客户端都需要也会被用到。
2、编写服务端代码如下:
public class ObjectServer
{
public static void main(String[] args) throws ClassNotFoundException
{
ServerSocket serverSocket;
FileOutputStream fos;
try
{
serverSocket = new ServerSocket(433);
while(true)
{
Socket clientSocket = serverSocket.accept();
System.out.println("socket open");
// 从clientSocket获取ObjectInputStream对象
ObjectInputStream ois = new ObjectInputStream(clientSocket.getInputStream());
// 读取从客户端传递过来的FilePojo对象
FilePojo fpo = (FilePojo) ois.readObject();
System.out.println(fpo.getFileName());
System.out.println(fpo.getFileLength());
// 初始化FileOutputStream对象fos
fos = new FileOutputStream("D:\\" + fpo.getFileName());
// 将fpo中的内容写入fpo
fos.write(fpo.getFileContent(), 0, (int)fpo.getFileLength());
fos.close();
ois.close();
}
}
catch(IOException ioe)
{
System.out.println("socket error and closed");
}
}
}
3、编写Android客户端端代码如下:
显示layout文件:main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="发送图片">
</Button>
</LinearLayout>
再是Activty代码
接android利用Serialization向服务器端发送任意的文件(二)
分享到:
相关推荐
在Android开发过程中,服务器端Web编程是至关重要的一个环节,特别是在构建移动应用时,与后端服务器的交互是实现功能的基础。"老罗Android开发 7服务器端Web编程"课程可能涵盖了如何在Android客户端与Web服务器进行...
Kotlin cross-platform / multi-format reflectionless serialization Kotlin serialization consists of a compiler plugin, which automatically produces visitor code for classes, and runtime library, ...
其中,JSON是最常用的一种,因其简洁的人读性,广泛应用于API接口和配置文件。通过扩展,库还允许用户自定义序列化格式,以满足特定需求。 四、注解驱动的序列化配置 为了控制序列化过程,Kotlinx.Serialization...
在这个项目中,"Server"文件可能包含了服务器端的Socket实例,用于监听来自客户端的连接请求,创建套接字并绑定到特定的IP地址和端口号上。一旦有客户端连接,服务器端就可以接收数据并发送响应。 客户端("client...
kSOAP2是一个轻量级的开源库,专为Android平台设计,用于实现SOAP(Simple Object Access Protocol)服务的客户端调用。SOAP是一种基于XML的协议,广泛用于Web服务的交互,使得不同编程语言和操作系统之间的数据交换...
`System.Runtime.Serialization`提供了一系列的类来支持这两种操作,如`DataContractSerializer`和`XmlSerializer`,它们分别用于基于数据契约和XML的序列化。 **二、数据契约(DataContract)** 数据契约是.NET中...
`oslo.serialization` 是一个在PyPI上发布的Python库,它专注于数据序列化和反序列化功能。这个2.2.0版本的压缩包`oslo.serialization-2.2.0.tar.gz`包含了该库的源代码,供开发者使用。 **oslo.serialization 概述...
《深入解析System.Runtime.Serialization.dll》 System.Runtime.Serialization.dll是.NET Framework中的一...在实际开发中,我们需要根据项目需求选择合适的序列化技术,并利用相关工具和资源确保dll文件的正确使用。
通过WebService与Android实现通信是跨平台开发中常见的一种方式,特别是在使用C#作为后端语言进行服务端开发,而Android应用作为前端时。本文将基于提供的文件信息,深入解析这一技术实现的关键步骤与原理。 ### ...
首先,"C#最精简的微信企业号发送消息"这个标题暗示我们关注的是一个简单的C#程序,该程序可以向微信企业号发送消息。在微信企业号的API中,发送消息通常涉及到调用HTTP接口,通过POST请求将JSON格式的数据发送到...
sirenix.serialization.dll
kotlinx-serialization-compiler-plugin.jar
1. **添加依赖**:首先,在项目构建文件(build.gradle)中添加Retrofit2和Kotlinx.Serialization的相关依赖。对于这个例子,可能需要添加如下依赖: ```groovy implementation '...
在C++编程中,序列化是一个重要的概念,它允许我们将对象的状态转换为可存储或可传输的数据格式,以便稍后能够恢复原始状态。Boost.Serialization库是C++社区广泛使用的序列化工具,它提供了丰富的功能来处理各种...
在iOS和Android等移动开发平台中,经常需要处理本地数据,JSON作为一种轻量级的数据交换格式,被广泛应用。本文将详细讲解如何在应用程序中加载和存储本地JSON文件,以及涉及的设备沙盒目录概念。 首先,理解JSON...
Boost::Serialization是C++库中的一个模块,它提供了一种序列化和反序列化对象的能力。这个库使得能够将复杂的C++对象结构保存到文件、数据库或者网络流中,然后在需要时重新加载,这对于数据持久化、版本控制以及跨...
5. 接收文件:服务器端也需要创建Socket,监听特定端口,接收客户端发送的数据块,并按顺序重组文件。 6. 关闭连接:完成传输后,关闭Socket连接。 三、UDP多文件传输 UDP不保证数据顺序和完整性,因此在实现多...
在实际使用中,Android应用首先需要导入KSOAP2库,然后创建一个SoapObject来表示即将发送的SOAP请求。接着,设置请求的命名空间、操作方法以及参数。之后,通过SoapSerializationEnvelope封装这个SoapObject,并指定...