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 。