Socket数据传输List<E>数据

本文介绍如何在Android应用中通过Socket从服务器接收并显示数据库数据。利用ObjectInputStream和ObjectOutputStream,直接传输实现了序列化接口的对象,如Student类,避免了JSON或XML的额外解析步骤。服务端和客户端的简单Socket通信示例代码包含在内。

在进行android程序开发时,有需求将服务器(PC)的数据库数据在android客户端显示,通过网络或Socket进行数据的传输,一般的SOCKET数据传输都是以流媒体进行传输,一把从服务器查询的数据类型经过面向对象的封装成Object,所以,一般都将数据转换成JSON或者XML进行传输,android程序进行解析显示,但也可以通过ObjectInputStream,ObjectOutputStream通过Socket传输,下面为代码:

数据的封装类:Student.java

package Test;

import java.io.Serializable;

public class Student implements Serializable {//实现序列化接口...必须
	private int id;
	private String name;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return id + "=" + name;
	}
}


 

还有一个集合类的封装:ListTest.java
package Test;

import java.io.Serializable;
import java.util.List;

public class ListTest implements Serializable {//实现序列化接口...必须

	private List<Student> list;

	public List<Student> getList() {
		return list;
	}

	public void setList(List<Student> list) {
		this.list = list;
	}
	
}

下面是简单的Socket传输测试:

服务端:

package Test;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class Server extends Thread {
	private ServerSocket server;
	private Socket socket;
	
	public Server(){
		try {
			server = new ServerSocket(9000);
			socket = server.accept();
		} catch (Exception e) {
			System.out.println("start error");
		}
	}
	@Override
	public void run() {
		try {
			Student stu = new Student();
			stu.setId(1);
			stu.setName("name1");
			Student stu1 = new Student();
			stu1.setId(1);
			stu1.setName("name2");
			List<Student> list = new ArrayList<Student>();
			list.add(stu);
			list.add(stu1);
			
			ListTest test = new ListTest();
			test.setList(list);
			
			
			ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
			out.writeObject(test);
			out.flush();
			out.close();
			socket.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		new Server().start();
	}
}

客户端:

package Test;

import java.io.ObjectInputStream;
import java.net.Socket;
import java.util.List;

public class Client {
	public static void main(String[] args) {
		try {
			Socket socket = new Socket("127.0.0.1",9000);
			ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
			//进行Object传输可以使用ObjectInputStream
			ListTest test = (ListTest) in.readObject();
			List<Student> list = test.getList();
			for (Student student : list) {
				System.out.println(student.getName());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

其中的两个封装类必须实现序列化接口!!!



 

### ADB命令使用指南及参数说明 Android Debug Bridge(ADB)是一个功能强大的工具,允许用户通过命令行与连接的Android设备进行交互。以下是一些常用的ADB命令及其参数的功能说明。 #### 设备管理 - `adb devices`:列出所有已连接的设备[^2]。 - `adb connect <ip_address>`:通过无线网络连接到指定IP地址的设备[^2]。 - `adb disconnect [ip_address]`:断开与特定或所有无线设备的连接。 #### 应用安装与卸载 - `adb install [options] <path_to_apk>`:安装应用。选项包括: - `-r`: 保留数据和缓存目录。 - `-d`: 允许降级安装。 - `-g`: 授予所有运行时权限[^2]。 - `adb uninstall [options] <package_name>`:卸载应用。选项如`-k`可保留数据和缓存[^2]。 #### 文件传输 - `adb push <local_path> <remote_path>`:将文件从计算机复制到设备上。 - `adb pull <remote_path> <local_path>`:将文件从设备复制到计算机。 #### Shell访问 - `adb shell`:进入设备的shell环境,可以执行各种Linux命令。 - `adb shell pm list packages`:列出设备上的所有已安装包[^1]。 - `adb shell am start -n <package_name>/<activity_name>`:启动特定的应用活动。 #### 日志查看 - `adb logcat`:实时显示系统日志输出,对于调试应用程序非常有用。 - `adb bugreport`:生成一个包含日志和其他诊断信息的报告,有助于分析问题[^1]。 #### 网络与端口转发 - `adb forward tcp:<host_port> tcp:<device_port>`:设置端口转发,使得主机上的某个端口请求被转发到设备上的另一个端口[^2]。 #### 重启与恢复 - `adb reboot`:重启设备。 - `adb reboot bootloader` 或 `adb reboot recovery`:分别用于重启至引导加载程序或恢复模式。 #### 性能监控 - `adb shell top`:显示正在运行的进程以及它们占用的CPU资源。 - `adb shell dumpsys meminfo <package_name>`:获取特定应用的内存使用情况。 #### 安全与授权 - 当首次通过USB连接设备时,会提示用户授权此计算机进行ADB调试[^3]。 - 开发者可以在设备的安全设置中启用“开发者选项”并开启“USB调试”来允许ADB连接。 ```bash # 示例: 安装一个APK文件,并保留其数据和缓存 adb install -r app-release.apk # 示例: 将本地文件推送到设备内部存储 adb push my_file.txt /sdcard/ # 示例: 查看设备上所有的已安装包 adb shell pm list packages ``` 以上是ADB的一些基本命令和参数的概述。熟练掌握这些命令可以帮助开发者更有效地进行开发、测试以及故障排查等工作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值