下面是我开发的一个小测试,包含Android端向服务器发送和下载图片的代码片段,希望可以发散更多的内容。
上传代码片段:
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server02 {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(40000);
Socket socket = server.accept();
System.out.println(“acpt = ” + socket.getInetAddress());
DataInputStream dos = new DataInputStream(socket.getInputStream());
int len = dos.available();
File file = new File("D:/develope/uc/12.jpg");
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file);
byte[] b = new byte[1024];
int lenth = 0;
while ((lenth = dos.read(b)) != -1) {
System.err.println("lenss-" + lenth);
fos.write(b, 0, lenth);
fos.flush();
}
System.out.println("len = "+ file.length());
byte[] data = new byte[len];
dos.read(data);
System.out.println("data = "+data);
dos.close();
socket.close();
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Android 端上传片段:
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Socket socket;
try {
socket = new Socket("192.168.2.203", 40000);
DataOutputStream out = new DataOutputStream(socket
.getOutputStream());
Bitmap bitmap = BitmapFactory.decodeResource(
getResources(), R.drawable.ic_launcher);
// img.setImageBitmap(bitmap);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 读取图片到ByteArrayOutputStream
bitmap.compress(Bitmap.CompressFormat.PNG, 100,
baos);
byte[] bytes = baos.toByteArray();
Log.e("-", "len " + bytes.length);
out.write(bytes);
out.flush();
Log.e("12", "bytes--->" + baos.size());
out.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}) {
}.start();
下载片段java:
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server01 {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(8820);
System.out.print(“链接。。。。”);
Socket socket = server.accept();
System.out.print(“链接”);
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
FileInputStream fis = new FileInputStream(“D:/develope/uc/440.png”);
int size = fis.available();
System.out.println("size = "+size);
byte[] data = new byte[size];
fis.read(data);
dos.writeInt(size);
dos.write(data);
dos.flush();
dos.close();
fis.close();
socket.close();
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
android端下载片段:
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Socket socket = null;
try {
socket = new Socket("192.168.2.203", 8820);
DataInputStream dataInput = new DataInputStream(
socket.getInputStream());
int size = dataInput.readInt();
byte[] data = new byte[size];
int len = 0;
while (len < size) {
len += dataInput.read(data, len, size - len);
}
ByteArrayOutputStream outPut = new ByteArrayOutputStream();
bmp = BitmapFactory.decodeByteArray(data, 0,
data.length);
bmp.compress(CompressFormat.PNG, 100, outPut);
if (bmp != null) {
Message msg = Message.obtain();
msg.obj = bmp;
han.sendMessage(msg);
}
// Bitmap bitmap =
// BitmapFactory.decodeStream(dataInput);
// myHandler.obtainMessage().sendToTarget();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}) {
}.start();