Você pode me ajudar a fazer um módulo de aplicação como o Xender que usa transferência de dados P2P?
Olá amigo,
Existem muitas opções para transferência de dados P2P, se por um momento você esquecer o Xender e se concentrar no caso de uso do módulo que você está tentando construir. Com caso de uso quero dizer como você quer usá-lo, se você quer compartilhar arquivos grandes ou mensagens simples ?
Para mensagens simples use case você deve procurar por conexão ao servidor cliente P2P Socket Programming.
Para arquivos grandes você pode ir para FTP(File Transfer Protocol) através da rede, o que acontece é que, o dispositivo que quer enviar dados, hospeda um servidor TCP e um cliente que quer receber dados se conecta ao servidor. O FTP é rápido e também funciona em Sockets. O FTP funciona com a idéia de ter 2 conexões socket entre o cliente e o servidor. A primeira é uma conexão de "controle", e a segunda é uma conexão de "dados". Na conexão de controle, comandos de texto são enviados para frente e para trás, como você está fazendo no seu código. Quando os dados precisam ser enviados para frente e para trás, isso é feito usando a conexão de dados. Assim o FTP pode lidar com todo o trabalho de compartilhamento de arquivos entre dois dispositivos de forma eficiente, se isto é o que você quer há uma série de exemplos de configuração de FTP em diferentes linguagens de programação, basta sair e procurar por ele.
Agora deixe's falar sobre Xender ou Shareit. A tecnologia por trás destes é chamada Wifi-Direct. Leia a documentação do desenvolvedor Android Create P2P connections with Wi-Fi Direct | Android Developers para adicionar este recurso em um aplicativo Android que você faz. O Wifi Direct também pode ser configurado entre PCs, porém apenas um número menor de pessoas o experimentou por FTP. Eu encontrei este repositório no GitHub que afirma configurar um servidor wifi-direct em uma máquina linux usando Python, se você pode testá-lo NaniteFactory/Wifi-Direct-on-Linux
No entanto, eu diria para ir para o FTP, se a sua aplicação de caso de uso está fora do ambiente Android.
Espera que ajude!
Obrigado pela leitura.