java socket传输图片_Java(Android)利用socket传输图片出了问题...

/**

现在要实现的功能是:app端从图库中选择一张图片放到ImageView上,然后发送到服务端,放到指定文件夹下.

*/

byte [] mIconGetBytes()//这是写的一个返回图片的字节数组的方法

{

Bitmap bm =((BitmapDrawable) mIcon.getDrawable()).getBitmap();//mIcon就是一个ImageView

ByteArrayOutputStream baos = new ByteArrayOutputStream();

bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

return baos.toByteArray();

}

/**

传输的时候执行的代码

*/

DataOutputStream dos=new DataOutputStream(socket.getOutputStream());

byte [] tx=mIconGetBytes();

dos.write(tx);

dos.flush();

/**

服务端接收的代码

*/

byte[] bytes=new byte[1000*1024];

FileOutputStream out = new FileOutputStream("d:\\mIcon\\"+name+".bmp");

in.read(bytes);

out.write(bytes);

out.flush();

out.close();

然后有的图片可以传过来,但是有的图片只穿了一部分

就像这样

667f19388ca2b15ddf74dd3e89b4d9d2.png

还请各路大神帮帮忙啊┭┮﹏┭┮

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java SocketJava语言中用于网络编程的一个类库,它提供了一种基于TCP/IP协议的网络通信方式。在Android中,我们也可以使用Java Socket来进行网络编程。下面是一个简单的Java Socket Android交互的例子: 首先,我们需要在AndroidManifest.xml文件中添加网络权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> ``` 然后,在Android客户端中,我们可以使用Socket类来连接服务端,并通过输入输流进行数据的传输。下面是一个简单的Android Socket客户端的例子: ```java try { // 创建Socket对象,并指定服务端的IP地址和端口号 Socket socket = new Socket("服务端IP地址", 服务端端口号); // 获取输流,向服务端发送数据 OutputStream outputStream = socket.getOutputStream(); outputStream.write("Hello, Server!".getBytes()); // 获取输入流,读取服务端的响应数据 InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len; StringBuilder sb = new StringBuilder(); while ((len = inputStream.read(buffer)) != -1) { sb.append(new String(buffer, 0, len)); } Log.d(TAG, "接收到服务端的响应数据:" + sb.toString()); // 关闭流和Socket连接 inputStream.close(); outputStream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } ``` 在服务端,我们可以使用Java Socket来监听客户端的连接,并通过输入输流进行数据的传输。下面是一个简单的Java Socket服务端的例子: ```java try { // 创建ServerSocket对象,并指定端口号 ServerSocket serverSocket = new ServerSocket(服务端端口号); // 监听客户端的连接 Socket socket = serverSocket.accept(); // 获取输入流,读取客户端发送的数据 InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len; StringBuilder sb = new StringBuilder(); while ((len = inputStream.read(buffer)) ! -1) { sb.append(new String(buffer, 0, len)); } Log.d(TAG, "接收到客户端发送的数据:" + sb.toString()); // 获取输流,向客户端发送响应数据 OutputStream outputStream = socket.getOutputStream(); outputStream.write("Hello, Client!".getBytes()); // 关闭流和Socket连接 inputStream.close(); outputStream.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } ``` 需要注意的是,以上代码仅为演示Java SocketAndroid中的使用方式,实际使用时需要根据具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值