通过TCP发送多个图像?

时间:2012-09-18 02:53:13

标签: c# android tcp

我正在使用Android.Net(C#)。我想通过AndroidTCP 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代理查看。因此,为每个捕获的图像创建一个单独的套接字会带来不便。对?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您只是一次向流中写入一个图像并关闭它。根据提示Android发送图像的方式,您可能会开始执行该过程,并且只会反复写入相同的第一张图像。

您可以尝试使用linquize的解决方案并制作一个您发送的大响应,或者您可以尝试添加某种类型的变量,告诉Android要写入哪个图像。然后,您应该能够将每个图像写为单独的写入。