public class AndroidClientActivity extends Activity implements OnClickListener{
private Button btn1;
private String filePath = "/sdcard/image/";
private String fileName = "bln.jpg";
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button)this.findViewById(R.id.btn1);
btn1.setOnClickListener(this);
}
public void onClick(View v) {
try {
// 建立和服务器的连接
Socket socket = new Socket("192.168.0.10", 6666);
// 创建FilePojo对象
FilePojo fpo = new FilePojo();
// 设定文件名
fpo.setFileName(fileName);
// 设定文件大小
File f = new File(filePath + fileName);
long fileLength = f.length();
fpo.setFileLength(fileLength);
// 读取文件内容,并将其转换为byte[]
FileInputStream fis = new FileInputStream(filePath + fileName);
byte[] fileContent = new byte[(int) fileLength];
fis.read(fileContent, 0, (int) fileLength);
fpo.setFileContent(fileContent);
// 将FilePojo对象fpo写到Socket client指定的输出流
long start = System.currentTimeMillis();
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(fpo);
long end = System.currentTimeMillis();
Toast.makeText(this.getApplicationContext(), "It takes " + (end - start) + "ms", Toast.LENGTH_LONG).show();
oos.flush();
oos.close();
}
catch(Exception ioe) {
ioe.printStackTrace();
} }}
下面就是在AndroidManifest.xml中增加permission权限如下:
<!-- 表示该程序可以读取sd卡上的内容 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>.
<!-- 表示该程序可以联网 -->
<uses-permission android:name="android.permission.INTERNET" />
4、运行。
先运行服务端ObjectServer,再在Android手机上运行客户端AndroidClientActivity 。
分享到:
相关推荐
在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, ...
在这个项目中,"Server"文件可能包含了服务器端的Socket实例,用于监听来自客户端的连接请求,创建套接字并绑定到特定的IP地址和端口号上。一旦有客户端连接,服务器端就可以接收数据并发送响应。 客户端("client...
【Kotlinx.Serialization详解】 Kotlinx.Serialization是一个强大的开源库,专门为Kotlin编程语言提供了跨平台的序列化解决方案。这个库允许开发者将数据对象转换成字节流或JSON等不同格式,反之亦然,这对于数据...
《深入理解System.Runtime.Serialization.DLL及其在.NET框架中的作用》 在.NET框架中,`System.Runtime.Serialization`命名空间是处理序列化和反序列化的核心组件,而`System.Runtime.Serialization.dll`则是这个...
**PyPI 官网下载 | oslo.serialization-2.2.0.tar.gz** PyPI(Python Package Index)是Python开发者获取和分享开源软件包的主要平台。`oslo.serialization` 是一个在PyPI上发布的Python库,它专注于数据序列化和反...
sirenix.serialization.dll
kotlinx-serialization-compiler-plugin.jar
《深入解析System.Runtime.Serialization.dll》 System.Runtime.Serialization.dll是.NET Framework中的一...在实际开发中,我们需要根据项目需求选择合适的序列化技术,并利用相关工具和资源确保dll文件的正确使用。
开发者需要在服务器端监听这个URL,解析接收到的JSON数据,并进行相应的业务逻辑处理。 在提供的压缩包文件"WeiXinTest"中,可能包含了实现这些功能的源代码,包括JsonHelper类、WeChatService类,以及用于配置和...
虽然文件中提到Android不能发送复杂数据给WebService,但这并不完全准确。实际上,通过适当的编码(如JSON或XML),Android可以发送和接收复杂数据类型。在Android客户端,可以使用HttpURLConnection或者第三方库如...
1. **添加依赖**:首先,在项目构建文件(build.gradle)中添加Retrofit2和Kotlinx.Serialization的相关依赖。对于这个例子,可能需要添加如下依赖: ```groovy implementation '...
在IT领域,结构体序列化和二进制文件读写是常见的数据存储和传输技术。这类技术主要用于将复杂的结构化数据转换成二进制格式,以便于高效地存储到磁盘或在网络上传输。以下是对"结构体序列化读写二进制文件类"这一...
Boost::Serialization是C++库中的一个模块,它提供了一种序列化和反序列化对象的能力。这个库使得能够将复杂的C++对象结构保存到文件、数据库或者网络流中,然后在需要时重新加载,这对于数据持久化、版本控制以及跨...
总结来说,C++11下使用Boost.Serialization库实现智能指针的序列化涉及到理解不同类型的智能指针的特性,以及如何利用Boost库提供的工具来适应这些特性。对于`std::unique_ptr`,我们需要利用`make_nvp`创建命名值对...
5. 接收文件:服务器端也需要创建Socket,监听特定端口,接收客户端发送的数据块,并按顺序重组文件。 6. 关闭连接:完成传输后,关闭Socket连接。 三、UDP多文件传输 UDP不保证数据顺序和完整性,因此在实现多...
JAX-RS Kotlinx Serialization A message body reader/writer and parameter converter which uses kotlinx-serialization. Usage val resourceConfig = new ResourceConfig(); resourceConfig.register(Json....
hystrix-serialization-1.5.18.jar
在iOS和Android等移动开发平台中,经常需要处理本地数据,JSON作为一种轻量级的数据交换格式,被广泛应用。本文将详细讲解如何在应用程序中加载和存储本地JSON文件,以及涉及的设备沙盒目录概念。 首先,理解JSON...