我正在使用Android
和.Net(C#)
。我想通过Android
从TCP socket
向PC发送一些图像(png),但PC总是只收到1张图像。请帮帮我!
Android代码(此代码位于方法中,我多次调用它):
outputStream = socket.getOutputStream();
File f = new File(filePath);
byte[] buffer = new byte[(int) f.length()];
FileInputStream fis = new FileInputStream(f);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(buffer, 0, buffer.length);
outputStream.write(buffer, 0, buffer.length);
outputStream.flush();
outputStream.close();
C#代码(我也多次调用此代码来获取图片):
Socket s =
new Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
s.Connect(new IPEndPoint(IPAddress.Parse(txtIPAddress.Text), 8002));
Bitmap bitmap = new Bitmap(new NetworkStream(s));
更新:我的Android应用程序将按时间截屏,然后转移到PC代理查看。因此,为每个捕获的图像创建一个单独的套接字会带来不便。对?
答案 0 :(得分:1)
您当前的设计可能只能处理一张图片。 请设计您的协议格式。 例如,
没有。图像n(4字节),长度1(4字节),图像数据1(N1字节),长度2,图像数据2(N2字节),...,长度n(4字节),图像数据n(Nn字节)
答案 1 :(得分:0)
您只是一次向流中写入一个图像并关闭它。根据提示Android发送图像的方式,您可能会开始执行该过程,并且只会反复写入相同的第一张图像。
您可以尝试使用linquize的解决方案并制作一个您发送的大响应,或者您可以尝试添加某种类型的变量,告诉Android要写入哪个图像。然后,您应该能够将每个图像写为单独的写入。