【问题标题】:Passing byte[] from Android App to C# Console Application?将字节 [] 从 Android 应用程序传递到 C# 控制台应用程序?
【发布时间】:2014-05-21 06:45:00
【问题描述】:

我正在构建一个 C#、WPF 和 Android 应用程序,主要用于培训,但无论哪种方式,我遇到的问题如下:

当我执行以下代码 WPF 应用程序时,它将所需文件从磁盘保存到桌面,但是当我尝试从 Android 应用程序执行相同操作时出现问题,我确实连接到控制台应用程序,但是byte[] 显然是不一样的格式,可能我漏掉了什么,或者我出了什么问题。


图像转字节数组函数:C#

 private static byte[] ImageToByteArraybyMemoryStream(Image image) {
        MemoryStream ms = new MemoryStream();
        image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        return ms.ToArray();
    }

将图像保存到磁盘方法 C#

public static void ByteArrayToImageFilebyMemoryStream(byte[] imageByte) {
   try {

        MemoryStream ms = new MemoryStream(imageByte);
        Image image = Image.FromStream(ms);
        image.Save(@"C:\Users\jycr753\Desktop\imageTest1.png");
   }
}

转换为 byte[] 并从 Android 应用程序发送。

 ByteArrayOutputStream stream = new ByteArrayOutputStream();
 bitmapImage.compress(Bitmap.CompressFormat.PNG, 70, stream);
 byteArray = stream.toByteArray();
 File fl = new File( imagePath);
 FileInputStream fi = new FileInputStream( fl );
 BufferedInputStream bi = new BufferedInputStream( fi );
 bi.read( byteArray, 0, byteArray.length );
 OutputStream outs = sock.getOutputStream();
 outs.write( byteArray, 0, byteArray.length );
 outs.flush();

来自控制台应用程序的图像


保存文件方法屏幕截图中的调试器

清单权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

字节码 如果 C# 应用程序需要 ASCII 编码,是否有任何问题?


任何帮助我指出正确的方向都会很棒,如果需要放置更多代码,请询问:)

感谢社区..

【问题讨论】:

  • 有什么理由不能将数据作为 base64 编码字符串发送?
  • 这样做有什么好处吗?
  • 很简单。便携

标签: c# android wpf sockets byte


【解决方案1】:

从提供的代码中看不到 C# 究竟如何打开套接字流的另一端以及它是如何读取的。

读取套接字流的一个常见问题是您不知道何时收到所有数据。

网络层可能会多次发出某些数据的信号。如果没有包含含义标记的协议数据包开始数据包结束,则无法确定整个PNG何时到达,除非您使用一些全有或全无的协议- 例如HTTP 获取

还必须双方同意确切的二进制协议,例如little or big endian

需要更多数据来提供更好的答案

【讨论】:

  • 谢谢,实际上我最终使用了http post,因为正如你提到的,没有办法找到他的数据何时完成,或者是否需要等待更多时间,因为@987654322 @comment on top 真的很糟糕,你只能传递有限数量的数据。但感谢您的回复,这是我最后所做的:) \
猜你喜欢
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多