当前位置:首页 > Android > 正文内容

android客户端和java服务端之间用socket来传输图片

jsc9年前 (2016-04-05)Android3371

一、从服务端向客户端发送图片:

服务端的代码:

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(30000);  
            Socket socket = server.accept();  
            DataOutputStream dos = new DataOutputStream(socket.getOutputStream());  
            FileInputStream fis = new FileInputStream("C:/sunnyTest/picture/cat01.jpg");  
            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();  
        }  
    }  
}

客户端的代码:

import com.login.R;
import android.app.Activity;  
import android.content.Intent;
import android.graphics.Bitmap;  
import android.graphics.Bitmap.CompressFormat;  
import android.graphics.BitmapFactory;  
import android.os.Bundle;  
import android.os.Handler;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.ImageView; 

public class TestActivity extends Activity {  
      
    private ImageView imageView = null;  
    private Bitmap bmp = null;
    
    private ImageView imageView02;
    private Bitmap bmp02;
    private Button button02;
    private String uploadFile="/mnt/sdcard/qt.png";  
    
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.image);  
  
        imageView = (ImageView) findViewById(R.id.image01);  
        Button btn = (Button) findViewById(R.id.Button01);  
        btn.setOnClickListener(new OnClickListener() {  
            public void onClick(View v) {  
                
                Socket socket = null;  
                try {  
                    socket = new Socket("192.168.1.203", 30000);  
                    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);  
                    imageView.setImageBitmap(bmp);  
                   
                    //Bitmap bitmap = BitmapFactory.decodeStream(dataInput);
                    //myHandler.obtainMessage().sendToTarget();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                } 
                finally {  
                    try {  
                        socket.close();  
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }  
                }  
                    }  
        });
 }  
 }

二、客户端向服务端发送图片的代码:

服务端:

import java.io.DataInputStream;
import java.io.DataOutputStream;  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.net.InetSocketAddress;  
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();  
            DataInputStream dos = new DataInputStream(socket.getInputStream());  
            int len = dos.available(); 
            System.out.println("len = "+len);
            byte[] data = new byte[len];  
            dos.read(data);
            
            System.out.println("data = "+data);
            dos.close();  
            socket.close();  
            server.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}

客户端:

 imageView02 = (ImageView)findViewById(R.id.image02);
        button02 = (Button)findViewById(R.id.Button02);
        button02.setOnClickListener(new OnClickListener(){
            public void onClick(View arg0) {
                Socket socket;
                try {
                    socket = new Socket("192.168.1.203",40000);
                    DataOutputStream out = new DataOutputStream(socket.getOutputStream()); 
                    
                    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.qt);
                    imageView02.setImageBitmap(bitmap);
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    //读取图片到ByteArrayOutputStream                    
                    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
                    byte[] bytes = baos.toByteArray();
                    out.write(bytes);
                    
                    System.out.println("bytes--->"+bytes);
                    out.close();
                    socket.close();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }            
        });
        
    }

转自:http://blog.csdn.net/qingzi635533/article/details/8961180

扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://www.jsc0.com/post/65.html

分享给朋友:

“android客户端和java服务端之间用socket来传输图片 ” 的相关文章

android ViewPager滑动事件 onPageChangeListener总结

android ViewPager滑动事件 onPageChangeListener总结

首先ViewPager在处理滑动事件的时候要用到OnPageChangeListener OnPageChangeListener这个接口需要实现三个方法:(onPageScrollStateChanged,onPageScrolled ,onPageSelected...

google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

    了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google...

android json解析及简单例子

JSON的定义:       一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式...

Android应用加入微信分享

Android应用加入微信分享

一、申请你的AppIDhttp://open.weixin.qq.com/  友情提示:推荐使用eclipse打包软件最后一步的MD5值去申请AppID二、官网下载libammsdk.jar包http://open.weixin.qq.com/download/?lang=zh_...

修改keystore密码别名等

修改keystore密码别名等

之前在测试Eclipse ADT的Custom debug keystore自定义调试证书的时候,发过一篇关于调试证书规格的博文:Eclipse ADT的Custom debug keystore所需证书规格,提到过自定义调试证书的密码和alias命名以及alias密码都是...

Android SharedPreferences PreperenceScreen 偏好数据存取

SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,1、Context.getSharedPreferences(String name,int mode)来得到一个指定name的SharedPreferences实例2、PreferenceMana...