0

我正在使用Android.Net(C#)。我想通过将一些图像(png)从AndroidPC 发送到 PC,TCP socket但 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 代理查看。因此,为每个捕获的图像创建单独的套接字时很不方便。对?

4

2 回答 2

1

您当前的设计可能只处理一张图像。请设计您的协议格式。例如,

不。图像 n(4 字节),长度 1(4 字节),图像数据 1(N1 字节),长度 2,图像数据 2(N2 字节),...,长度 n(4 字节),图像数据 n(Nn 字节)

于 2012-09-18T03:55:24.613 回答
0

您一次只能将一个图像写入流并关闭它。根据提示 android 发送图像的方式,您可能会重新开始该过程,并且只会一次又一次地写入相同的第一个图像。

您可以尝试 linquize 的解决方案并做出一个您发送的大响应,或者您可以尝试添加某种变量来告诉 android 要写入哪个图像。然后您应该能够将每个图像写入单独的写入。

于 2012-09-18T04:07:59.593 回答