Android开发为自己做简单服务器

Android开发避免不了网络传输,工作中经常需要等后台做接口,我们来上传数据图片等内容,太慢了,当我们业余自己写东西的时候没有服务器可用,就把自己的电脑当服务器来用吧。
下面是我开发的一个小测试,包含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();

猜你喜欢

转载自blog.csdn.net/qq_31914027/article/details/78021935