Como transferir um arquivo usando soquetes de um aplicativo java android para um aplicativo windows c #?

Francisco Xavier Vasconcelos

Criei um aplicativo em java no android que envia os bytes de um arquivo .jpg por meio de um soquete e um soquete de servidor assíncrono em C # no Windows que recebe os bytes e os grava em um arquivo .jpg. O arquivo recebido não pode ser aberto.

No aplicativo java, que é o cliente, usei a seguinte classe asynctask executada no onCreate:

class asyncTask extends AsyncTask<Void,Void,Void>{
    @Override
    protected Void doInBackground(Void... voids) {
        try {

            final File myFile = new File("//sdcard/DCIM/Camera/img1.jpg");
            byte[] bytes = new byte[(int) myFile.length()];

            BufferedInputStream buf = new BufferedInputStream(new FileInputStream(myFile));
            buf.read(bytes, 0, bytes.length);

            s = new Socket(ip,3333);
            OutputStream OS = s.getOutputStream();
            OS.write(bytes, 0, bytes.length);
            OS.flush();
            s.close();

        } catch (IOException e) {
            Log.d("Error",e.toString());
            e.printStackTrace();
        }
        return null;
    }
}

E no aplicativo C # eu recebi os dados e os salvei em um arquivo no seguinte método de retorno de chamada assíncrono que é chamado quando os dados são recebidos:

public static void ReadCallback(IAsyncResult ar)
    {
        Socket clientSocket = (Socket)ar.AsyncState;
        int buffLength = clientSocket.EndReceive(ar);
        Array.Resize(ref buffer, buffLength);
        totaLength += buffLength;
        buffer.CopyTo(allData, totaLength - 1);

        if (buffLength == 0)
        {
            Array.Resize(ref allData, totaLength);
            File.WriteAllBytes("C: /Users/fxavi/Desktop/img.jpg", allData);
            Console.WriteLine(totaLength);
        }
        else
            clientSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReadCallback), clientSocket);
    }
Francisco Xavier Vasconcelos

Eu me sinto muito idiota depois de encontrar a solução para esse problema. Que é o que totaLength += buffLength;deve ser executado antes buffer.CopyTo(allData, totaLength);para que o buffer seja copiado para o índice correto.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como transferir dados de um aplicativo para outro no Android

Controlar um aplicativo Java a partir de um aplicativo da web PHP usando soquetes

Envie um valor flutuante usando soquetes (do aplicativo Java para C #)

Como hospedar um arquivo local para acesso http externo de um aplicativo C # Windows

Para ler um arquivo de um aplicativo de jogo (em C ++) para meu aplicativo Android

como fazer upload de um arquivo Excel para a tabela de banco de dados sql usando o aplicativo c # windows form

Como transferir um arquivo para outro local usando java

Maneira certa de transferir um arquivo CSV para um aplicativo de BI?

Como posso transferir de um aplicativo de console escrito em "ir" para outro aplicativo de console?

Como abro um arquivo ".exe" de aplicativo do Windows no Visual Basic para ver o código?

Como visualizar um arquivo de áudio em um aplicativo Android usando o Android Studio?

como analisar um arquivo de um aplicativo java docker container

Como faço para transformar um aplicativo Windows Forms (C #) em um único arquivo exe?

Como criar um atalho de aplicativo dinâmico usando a API ShortcutManager para o aplicativo Android 7.1?

Como podemos passar um arquivo CSV usando métodos de solicitação HTTP de um aplicativo angular para um aplicativo de nó em execução em um servidor

Como transferir um aplicativo angular existente para o elétron?

Usar um aplicativo Java como programa padrão para um tipo de arquivo específico?

Como usar um arquivo Embedded do Assembly para contextos SoundPlayer dentro de um aplicativo C #

Transferir um aplicativo para outra conta Firebase

Como fazer o upload de um arquivo da minha máquina local para um cofre da geleira s3 usando c # em um aplicativo de console?

Enviando um arquivo de imagem a partir de um telefone Android para um PC através de Python usando soquetes

como ler um arquivo de texto no aplicativo universal do Windows

Como associo tipos de arquivo a um aplicativo para iPhone?

Conselhos / dicas sobre como criar um banco de dados online para um formulário C # Windows e aplicativo Android

Como posso bloquear um arquivo de dentro de um aplicativo Java para todos os outros processos em um sistema operacional?

Como posso bloquear um arquivo de dentro de um aplicativo Java para todos os outros processos em um sistema operacional?

Enviar um objeto de um aplicativo java para um aplicativo Android via Bluetooth?

Abrindo um arquivo do aplicativo Windows C #

Como posso corrigir um erro de tempo de execução para um aplicativo Ruby on Rails usando um sistema operacional Windows?