Surpreendente. Provavelmente economizou um mês de trabalho. Você pode usá-lo em um produto comercial?
Ivan G.
Você deve ler sobre a licença BSD modificada. Se permite a utilização de código em produto comercial ou não.
damluar de
2
Não consigo exibir imagens na minha página html. Qual diretório deve ser usado no html para que as imagens sejam exibidas? Obrigado.
Shane Oliver
o caminho para as imagens é relativo em relação à página html. não é um problema de servidor http, é html ruim ..
damluar
Posso servir um arquivo que está sendo adicionado ao homeDir. Por exemplo, estou copiando um arquivo chamado f1 em homeDir (usando javacode). Agora a cópia do arquivo está em andamento e se alguém enviar uma solicitação para o arquivo f1 O servidor pode processar a solicitação?
Ashwin N Bhanushali
23
O NanoHttpd funciona perfeitamente no Android - temos código em produção, nas mãos dos usuários, que é construído sobre ele.
A licença permite absolutamente o uso comercial do NanoHttpd, sem quaisquer implicações "virais".
Onde posso encontrar um tutorial / amostra de como usá-lo? por exemplo, para servir um arquivo localizado no dispositivo, para que outros possam baixá-lo (ou transmitir a partir dele)?
desenvolvedor de Android de
9
Isso pode ser feito usando ServerSocket , o mesmo que em JavaSE. Esta aula está disponível no Android. android.permission.INTERNETÉ necessário.
A única parte mais complicada é que você precisa de uma espera de thread separada no ServerSocket, atendendo a sub-soquetes que vêm de seu acceptmétodo. Você também precisa parar e retomar este tópico conforme necessário. A abordagem mais simples parece matar o thread de espera fechando o ServerSocket. Se você só precisa de um servidor enquanto sua atividade está no topo, iniciar e parar o encadeamento ServerSocket pode ser elegantemente vinculado aos métodos de ciclo de vida da atividade. Além disso, se o servidor tiver vários usuários, pode ser bom atender solicitações de threads bifurcadas. Se houver apenas um usuário, isso pode não ser necessário.
Se você precisar informar ao usuário sobre os quais IP é a escuta do servidor, utilize NetworkInterface .getNetworkInterfaces (), esta pergunta pode dizer truques extras.
Finalmente, aqui existe possivelmente o servidor Android mínimo completo que é muito curto, simples e pode ser mais fácil de entender do que os aplicativos de usuário final finalizados, recomendados em outras respostas.
Isso é alto para os padrões do Android (100kb). Bom se você deseja um servidor sério em java em vez de apenas um simples serviço de arquivo ou uma interface de configuração / depuração / status remota em seu aplicativo.
Respostas:
Considere este: https://github.com/NanoHttpd/nanohttpd . Muito pequeno, escrito em Java. Usei sem nenhum problema.
fonte
O NanoHttpd funciona perfeitamente no Android - temos código em produção, nas mãos dos usuários, que é construído sobre ele.
A licença permite absolutamente o uso comercial do NanoHttpd, sem quaisquer implicações "virais".
fonte
Isso pode ser feito usando ServerSocket , o mesmo que em JavaSE. Esta aula está disponível no Android.
android.permission.INTERNET
É necessário.A única parte mais complicada é que você precisa de uma espera de thread separada no ServerSocket, atendendo a sub-soquetes que vêm de seu
accept
método. Você também precisa parar e retomar este tópico conforme necessário. A abordagem mais simples parece matar o thread de espera fechando o ServerSocket. Se você só precisa de um servidor enquanto sua atividade está no topo, iniciar e parar o encadeamento ServerSocket pode ser elegantemente vinculado aos métodos de ciclo de vida da atividade. Além disso, se o servidor tiver vários usuários, pode ser bom atender solicitações de threads bifurcadas. Se houver apenas um usuário, isso pode não ser necessário.Se você precisar informar ao usuário sobre os quais IP é a escuta do servidor, utilize NetworkInterface .getNetworkInterfaces (), esta pergunta pode dizer truques extras.
Finalmente, aqui existe possivelmente o servidor Android mínimo completo que é muito curto, simples e pode ser mais fácil de entender do que os aplicativos de usuário final finalizados, recomendados em outras respostas.
fonte
Outro servidor que você pode tentar http://tjws.sf.net , na verdade já fornece a versão habilitada para Android.
fonte
Você pode experimentar a edição Restlet para Android:
A fonte pode ser baixada do site do Restlet :
fonte
Se você estiver usando o kotlin, considere estas bibliotecas. É construído para a linguagem kotlin. https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor
AndroidHttpServer é muito pequeno, mas o recurso também é menor.
Ktor é uma biblioteca muito boa e o uso é simples também
fonte