是手机TCP客户端接收哦
时间: 2023-10-23 13:09:40 浏览: 84
哦,我理解了你的意思。下面是一个简单的 Android TCP 客户端,它可以连接到指定的服务器,并接收来自服务器的 Base64 格式的图片数据并将其显示在 ImageView 中:
```java
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.util.Base64;
public class ImageReceiver extends AsyncTask<String, Void, Bitmap> {
private ImageView imageView;
public ImageReceiver(ImageView imageView) {
this.imageView = imageView;
}
@Override
protected Bitmap doInBackground(String... strings) {
Bitmap bitmap = null;
try {
// 连接到指定的服务器和端口
Socket socket = new Socket(strings[0], Integer.parseInt(strings[1]));
// 获取输入流,读取服务器返回的数据
InputStream in = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = reader.readLine();
// 关闭连接
socket.close();
// 将接收到的 Base64 格式的图片数据解码为字节数组
byte[] imageData = Base64.getDecoder().decode(line);
// 将字节数组转换为 Bitmap 对象
bitmap = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
// 在 UI 线程中更新 ImageView
imageView.setImageBitmap(bitmap);
}
}
```
使用时,只需在需要接收图片的地方调用 `ImageReceiver` 的 `execute` 方法即可:
```java
ImageView imageView = findViewById(R.id.imageView);
new ImageReceiver(imageView).execute("example.com", "1234");
```
这里假设你有一个名为 `imageView` 的 ImageView,你想要从服务器的 IP 地址为 `example.com`,端口号为 `1234` 的服务器中接收图片数据,并将其显示在该 ImageView 中。需要注意的是,在真实的应用中,你需要在后台线程中进行网络操作,以避免阻塞 UI 线程。
阅读全文