Android / C#套接字 - 1帧后解码/ Enconde String64错误(几乎完成)

时间:2016-08-19 15:30:11

标签: c# android sockets bitmap

我创建了一个C#服务器,通过套接字将一个Bitmap发送到android客户端。该位图不断更新,因为它是一个视频源。

服务器C#

  private void send_data()
    {
                    ImageConverter converter = new ImageConverter();                
                    byte[] sendBytes = (byte[])converter.ConvertTo(master.picturebox_master.Image, typeof(byte[]));



                    string_master_frame = System.Text.Encoding.UTF8.GetString(sendBytes);
                    string_master_frame = Convert.ToBase64String(sendBytes);

                    data = string_master_frame + "\n";


                    tcpServer1.Send(data);
    }

客户端Android

    @Override
protected Void doInBackground(Void... arg0) {


        Socket socket = null;

        try {
            socket = new Socket(dstAddress, dstPort);

            Scanner r = new Scanner(new InputStreamReader(socket.getInputStream()));

            while(true) {

                valores[26] = r.nextLine();

                publishProgress(valores[26]);
            }

    return null;

}

@Override
protected void onProgressUpdate(String... values) {

    byte[] decodedString = Base64.decode(values[26],Base64.NO_WRAP);
    Bitmap master_bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
    master_frame.setImageBitmap(master_bitmap);

}

发送第一帧,Android客户端正确显示。但是当下一帧出现时,Android客户端崩溃。

错误:

  

处理:com.example.tiago.java_android,PID:826                                                                               java.lang.IllegalArgumentException:bad base-64                                                                                   在android.util.Base64.decode(Base64.java:161)                                                                                   在android.util.Base64.decode(Base64.java:136)                                                                                   在android.util.Base64.decode(Base64.java:118)                                                                                   在com.example.tiago.java_android.Cliente.onProgressUpdate(Cliente.java:228)                                                                                   在com.example.tiago.java_android.Cliente.onProgressUpdate(Cliente.java:28)                                                                                   在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:656)                                                                                   在android.os.Handler.dispatchMessage(Handler.java:102)                                                                                   在android.os.Looper.loop(Looper.java:135)                                                                                   在android.app.ActivityThread.main(ActivityThread.java:5431)                                                                                   at java.lang.reflect.Method.invoke(Native Method)                                                                                   在java.lang.reflect.Method.invoke(Method.java:372)                                                                                   在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:914)                                                                                   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)

我虽然valores [26]数据被破坏了,但事实并非如此。我正确地得到了数据。

我使用http://codebeautify.org/base64-to-image-converter检查我是否正确获取了数据。

有什么想法吗?

0 个答案:

没有答案