通过tcp接收多个图像
本文关键字:图像 tcp 通过 | 更新日期: 2023-09-27 18:13:12
此代码通过TCP从c#服务器接收多个图像(视频)并且工作良好。但是它非常慢,而且丢失帧是他们任何使它快速(消除延迟)的方法,比如不关闭套接字,或者代替使用数据输入流。
private Runnable connectSocket=new Runnable() {
@Override
public void run() {
{
try {
socket = new Socket(serverAddr, 4444);
DataInputStream dis;
try {
dis=new DataInputStream(socket.getInputStream());
int bytesRead;
byte[] pic = new byte[5000*1024];
bytesRead = dis.read(pic, 0, pic.length);
bitmapimage = BitmapFactory.decodeByteArray(pic, 0, bytesRead);
} catch(Exception e) {
Log.e("TCP", "S: Error", e);
} finally {
socket.close();
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
Log.e("TCP", "C: UnknownHostException", e);
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("TCP", "C: IOException", e);
e.printStackTrace();
}
imgview.setImageBitmap(bitmapimage);
imgview.invalidate();
}
mHandler.postDelayed(this, 0);
}
};
}
逐个发送图像不是一个很好的方法。考虑使用压缩视频格式。
你也不能真的让它快。这完全取决于2G的网络设备,总是比wifi/3G慢