Android网络编程之局域网传输文件:

首先创建一个socket管理类,该类是传输文件的核心类,主要用来发送文件和接收文件

具体代码如下:

 package com.jiao.filesend;

 import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket; import android.os.Environment; /**
* Socket管理类
* 1、接收文件
* 2、发送文件
* @author jiaocg
*
*/
public class SocketManager {
private ServerSocket server;
public SocketManager(ServerSocket server){
this.server = server;
}
//接收文件
public String ReceiveFile(){
try{
//接收文件名
Socket name = server.accept();
//获取数据的输入流
InputStream nameStream = name.getInputStream();
//字符流转换为字节流
InputStreamReader streamReader = new InputStreamReader(nameStream);
BufferedReader br = new BufferedReader(streamReader);
//接收到文件名
String fileName = br.readLine();
br.close();
streamReader.close();
nameStream.close();
name.close();
//接收文件数据
Socket data = server.accept();
InputStream dataStream = data.getInputStream();
String savePath = Environment.getExternalStorageDirectory().getPath() + "/" + fileName;
FileOutputStream file = new FileOutputStream(savePath, false);
byte[] buffer = new byte[1024];
int size = -1;
while ((size = dataStream.read(buffer)) != -1){
file.write(buffer, 0 ,size);
}
file.close();
dataStream.close();
data.close();
return fileName + "---接收完成"+"---保存至:"+savePath;
}catch(Exception e){
System.out.println(e.toString());
return "接收错误:\n" + e.getMessage();
}
} //发送文件
public String SendFile(String fileName, String path, String ipAddress, int port){
try {
//发送文件名
//首先发送文件名
Socket name = new Socket(ipAddress, port);
//创建输出流
OutputStream outputName = name.getOutputStream();
//字符流转换为字节流
OutputStreamWriter outputWriter = new OutputStreamWriter(outputName);
//缓冲区
BufferedWriter bwName = new BufferedWriter(outputWriter);
//写到缓冲区
bwName.write(fileName);
bwName.close();
outputWriter.close();
outputName.close();
name.close(); //发送文件数据
Socket data = new Socket(ipAddress, port);
//创建输出流
OutputStream outputData = data.getOutputStream();
//从文件系统中的某个文件中获得输入字节
FileInputStream fileInput = new FileInputStream(path);
int size = -1;
byte[] buffer = new byte[1024];
while((size = fileInput.read(buffer, 0, 1024)) != -1){
outputData.write(buffer, 0, size);
}
outputData.close();
fileInput.close();
data.close();
return fileName + " 发送完成";
} catch (Exception e) {
return "发送错误:\n" + e.getMessage();
}
}
}

我们可以利用上述的文件传输类,来实现局域网中的文件传输

具体使用代码如下:

 // 1、文件名 2、文件路径 3、目标ip 4、目标端口
String response = socketManager.SendFile(fileName, filePath,ip, POST);
Message.obtain(handler, 0, response).sendToTarget();

调用以上代码就可以实现局域网中的文件传输;

注意:以上文件传输属于网络传送,记得在子线程中执行哦,否则要报错!

Android网络编程只局域网传输文件的更多相关文章

  1. Java 学习笔记 网络编程 使用Socket传输文件 CS模式

    Socket的简单认识 Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点. Socket是连接 ...

  2. linux网络编程之断点传输文件

    以下载链接"http://www.boa.org/boa-0.94.13.tar.gz"为例: 断点续传实验大概步骤: ===================== 1,使用geth ...

  3. Android网络编程基础

    Android网络编程只TCP通信 TCP 服务器端工作的主要步骤如下.步骤1 调用ServerSocket(int port)创建一个ServerSocket,并绑定到指定端口上.步骤2 调用acc ...

  4. 转 Android网络编程之使用HttpClient批量上传文件 MultipartEntityBuilder

    请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 http://www.tuicool.com/articles/Y7reYb 我曾在<Andr ...

  5. Android网络编程概述

    Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...

  6. Android网络编程要学的东西与Http协议学习

    本节引言: 本节开始我们来学习Android网络编程相关的一些东西:Android端网络编程是要干嘛?http协议的学习,使用自带扣脚Json解析类解析Json,XML解析常用的几种方式,HttpUr ...

  7. 1.Android网络编程-HTML介绍

    1.HTML介绍 超文本标记语言(HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言. 在Eclipse下则可以使用自带的浏览器浏览html: 2.H ...

  8. Android网络编程系列 一 TCP/IP协议族

    在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...

  9. 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...

随机推荐

  1. 二叉查找树(一)之 图文解析 和 C语言的实现

    概要 本章先对二叉树的相关理论知识进行介绍,然后给出C语言的详细实现.关于二叉树的学习,需要说明的是:它并不难,不仅不难,而且它非常简单.初次接触树的时候,我也觉得它似乎很难:而之所产生这种感觉主要是 ...

  2. Character Controller (角色控制器) 中 Move()和SimpleMove() 的区别

    首先给出两者的圣典: CollisionFlagsMove(Vector3motion); Description A more complex move function taking absolu ...

  3. jQuery的maskedinput插件 设置input掩码

    一.下载插件  http://digitalbush.com/projects/masked-input-plugin/二.属性a: 表示只能输入大小写字母9:表示只能输入0-9之间的数字*:a和9的 ...

  4. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  5. sprint个人总结+读书博客

    读书感想:    第8章讲了需求分析,在我的日常软件编写中,肯定需要需求分析的,一个没有需求的软件,编写出来也没有什么意义,只能是丢在一个角落里发霉.需求有各种各样,要怎样才能满足客户的需求呢,那就要 ...

  6. windbg sos加载相关

    使用windbg 加载sos.dll时,经常碰到报The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.d ...

  7. C# 通用验证类 支持 WPF,MVC,Winform

    验证方式,   通过继承 IDataErrorInfo接口 和 DataAnnotations 解释标记语言而实现, 为了能在WPF上通用,所了也要继承属性更改通知接口INotifyPropertyC ...

  8. 重新想象 Windows 8.1 Store Apps (82) - 绑定: DataContextChanged, TargetNullValue, FallbackValue, UpdateSourceTrigger

    [源码下载] 重新想象 Windows 8.1 Store Apps (82) - 绑定: DataContextChanged, TargetNullValue, FallbackValue, Up ...

  9. JavaScript常用代码

       页面的按钮全选:   function CheckBoxAll() {             //得到页面上所有input表单元素:document.getElementsByTagName( ...

  10. JavaMail入门第三篇 发送邮件

    JavaMail API中定义了一个java.mail.Transport类,它专门用于执行邮件发送任务,这个类的实例对象封装了某种邮件发送协议的底层实施细节,应用程序调用这个类中的方法就可以把Mes ...