将字节[]从Android应用程序传递到C#控制台应用程序?
我正在构建一个C#、WPF和Android应用程序,主要用于培训,但不管怎样,我遇到的问题如下: 当我执行下面的代码WPF应用程序时,它会将所需文件从磁盘保存到桌面,但当我尝试从Android应用程序执行相同操作时,问题出现了,我确实连接到了控制台应用程序,但是将字节[]从Android应用程序传递到C#控制台应用程序?,c#,android,wpf,sockets,byte,C#,Android,Wpf,Sockets,Byte,我正在构建一个C#、WPF和Android应用程序,主要用于培训,但不管怎样,我遇到的问题如下: 当我执行下面的代码WPF应用程序时,它会将所需文件从磁盘保存到桌面,但当我尝试从Android应用程序执行相同操作时,问题出现了,我确实连接到了控制台应用程序,但是byte[]显然不是相同的格式,可能我错过了什么,或者我出了什么问题 将图像转换为字节数组函数:C 将映像保存到磁盘方法C# 转换为byte[]并从Android应用程序发送 ByteArrayOutputStream strea
byte[]
显然不是相同的格式,可能我错过了什么,或者我出了什么问题
将图像转换为字节数组函数:C
将映像保存到磁盘方法C#
转换为
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();
来自控制台应用程序的图像
保存文件方法屏幕截图中的调试器 清单许可证
字节码 如果C#应用程序希望使用
ASCII
编码,是否存在任何问题
如果有人能帮我指出正确的方向,那就太好了,如果需要添加更多的代码,请询问:)
感谢社区。从提供的代码中看不到C#如何打开套接字流的另一端以及如何读取 读取套接字流的常见问题是,您不知道何时接收到所有数据 网络层可能多次发出某些数据的信号。如果没有一些协议,包括数据包开始和数据包结束的含义标记,则无法确定整个PNG何时到达,除非您使用一些全有或全无协议,例如HTTP GET 此外,确切的二进制协议必须经双方同意,例如:
需要更多数据来提供更好的答案您为什么不能将数据作为base64编码字符串发送?这样做有什么好处吗?很简单。可移植性谢谢,实际上我最终使用了http post,因为正如您所提到的,无法找到数据何时到达完成,或者如果需要等待更多,因为顶部的
base64
注释非常糟糕,您只能传递有限的数据。但是谢谢你的回复,这就是我最后做的:)\
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");
}
}
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" />