Linguagem C  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
legionarioba
JavaTeenager
[Avatar]

Membro desde: 24/03/2003 00:40:42
Mensagens: 171
Localização: Salvador
Offline

Olá pessoALL...

Preciso fazer uma implementação utilizando JNI pra um trabalho na facul... Vou criar uma classe que irá ser distribuída como agente móvel...e, bem, vamos a problemática: existe na linguagem C algum .h que já retorne dados como memória livre, espaço livre em disco, nome do host? Sei que no linux existe um arquivo que possui todas essas informações(ai eu poderia usar apenas funções de leitura de caracter e arquivo), mas e no S.O de Tio Bill, alguém sabe abrir a caixa de ferramentas?

http://silvioluiz.wordpress.com
[Email] [MSN]
smota
Moderador
[Avatar]

Membro desde: 21/02/2003 16:19:19
Mensagens: 1647
Offline

Nome do Host

Espaço em disco e memória nao conheço uma maneira sem usar a API do SO.

"Perfection is reached not when there's nothing more to add but when there's no more to take out"
legionarioba
JavaTeenager
[Avatar]

Membro desde: 24/03/2003 00:40:42
Mensagens: 171
Localização: Salvador
Offline

Certo...

Se então eu for usar a Win32API, eu não precisaria mais do JNI? E pra Linux como eu faria no caso? Tá soda...hehe

http://silvioluiz.wordpress.com
[Email] [MSN]
smota
Moderador
[Avatar]

Membro desde: 21/02/2003 16:19:19
Mensagens: 1647
Offline

legionarioba wrote:Se então eu for usar a Win32API, eu não precisaria mais do JNI? E pra Linux como eu faria no caso? Tá soda...hehe


Precisa de JNI de qualquer jeito já que essa informacao vc vai ter que usar fazendo uma chamada nativa.

No Linux vc teria uma biblioteca propria ... ou seja, uma pra cada plataforma (lembrando que já não está na API do Java justamente por não haver um modo portável de fazer o que vc quer).

[ ]s

"Perfection is reached not when there's nothing more to add but when there's no more to take out"
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

legionarioba wrote:Olá pessoALL...

Preciso fazer uma implementação utilizando JNI pra um trabalho na facul... Vou criar uma classe que irá ser distribuída como agente móvel...e, bem, vamos a problemática: existe na linguagem C algum .h que já retorne dados como memória livre, espaço livre em disco, nome do host? Sei que no linux existe um arquivo que possui todas essas informações(ai eu poderia usar apenas funções de leitura de caracter e arquivo), mas e no S.O de Tio Bill, alguém sabe abrir a caixa de ferramentas?


O nome do .h é (surpresa!) #include < windows.h >

Memória livre: GlobalMemoryStatus()
Espaço livre em disco: GetDiskFreeSpaceEx()
Nome do host: isso dá para fazer 100% java. (É o host que você quer, não o nome NetBIOS da máquina, que são coisas ligeiramente diferentes)

Para mais detalhes, e mais coisas que podem ser perguntadas ao Windows: http://msdn.microsoft.com .

(Em ambiente Windows sempre usei o Microsoft Visual Studio, portanto não sei como é o esquema de usar windows.h no gcc, ou então na versão "free" do compilador C++ da Borland ou da Microsoft.)

Se seu inglês é bom, dá para perguntar algumas coisas no fórum "Native
Methods" do http://forum.java.sun.com/index.jspa - eu atendo lá muito de vez em quando como edsonw , mas nunca dou respostas muito completas (o meu inglês não é lá aquela coisa, e não tenho muita paciência também...)


[WWW]
fcmartins
Java Ninja
[Avatar]

Membro desde: 12/01/2005 09:40:43
Mensagens: 293
Localização: Bragança Paulista- SP
Offline

lembrando que já não está na API do Java justamente por não haver um modo portável de fazer o que vc quer
Não está na API do Java por preguiça da Sun de fazer. Um método p/ pegar o espaço livre em disco é solicitado desde a versão 1.3 e a Sun está protemetendo implementar agora na 6. Muita coisa que é feita com JNI existe em toda plataforma e já poderia estar no pacote oficial, a JavaComm é o exemplo clássico.

Se então eu for usar a Win32API, eu não precisaria mais do JNI? E pra Linux como eu faria no caso?
Você vai precisar do mesmo jeito, p/ usar a Win32 você usa C ou C++. P/ Linux, você terá que pesquisar as libs equivalentes.

Em ambiente Windows sempre usei o Microsoft Visual Studio, portanto não sei como é o esquema de usar windows.h no gcc, ou então na versão "free" do compilador C++ da Borland ou da Microsoft.
O Dev-C++ já vem com o port da Win32, é só usar o #include <windows.h> normalmente. Não esqueça de referenciar em seu projeto os includes do JNI.

Almanaque

{SCJP 1.4}
{SCWCD 1.4}
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

No linux, e a maioria dos UNIX, você pode ler alguns arquivos especiais, no caso do linux eles ficam dentro do procfs, que normalmente fica em /proc.

Você pode evitar usar JNI fazendo uma super gambiarra no windows, vários métodos da API do windows podem ser chamados atraves das extensões de shell.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
legionarioba
JavaTeenager
[Avatar]

Membro desde: 24/03/2003 00:40:42
Mensagens: 171
Localização: Salvador
Offline

Olá pessoALL,

Obrigado a todos pela ajuda. Deixa eu tentar explicar um pouco melhor a idéia: estou fazendo um trabalho aqui pra facul sobre agentes móveis. A intenção deste agente( é coletar algumas informações da máquina na qual o agente irá se "distribuir" (host, memória livre, espaço em disco, coisas afins...) . Os agentes serão criados usando o framework Aglets . A intenção é fazer com que a implementação sirva tanto pra Windows tanto quanto pra Linux... Então preciso identificar em meu agente qual o SO da máquina ao qual ele está rodando, e depois então usar o "código correto"...Ai cai uma perguntinha: Alguém já mexeu com Agentes? Os agentes, da mesma forma que os applets, possuem um "sand-box" pra que qualquer programa malicioso não faça o que bem queira no S.O., portanto, ainda estou pesquisando sobre que "permissões" eu terei usando meu agente, e até onde posso ir com o mesmo...Portanto, totalmente experimental ! hehe ... Mas tá ficando very cool

http://silvioluiz.wordpress.com
[Email] [MSN]
legionarioba
JavaTeenager
[Avatar]

Membro desde: 24/03/2003 00:40:42
Mensagens: 171
Localização: Salvador
Offline

Só uma coisinha..onde encontro este bendito windows.h que não descubro? EU li que o Dev-C++ vem com ele, mas não quero depender do mesmo (Na facul talvez só possa mexer com o Turbo c++, que por sinal eu adoro..hehe) ...

http://silvioluiz.wordpress.com
[Email] [MSN]
fcmartins
Java Ninja
[Avatar]

Membro desde: 12/01/2005 09:40:43
Mensagens: 293
Localização: Bragança Paulista- SP
Offline

Aí você terá que baixar a SDK da MS que é grátis, mas tem 250 megas. Já o Dev-C++ tem uns 10.

Almanaque

{SCJP 1.4}
{SCWCD 1.4}
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Para checar qual é o sistema operacional é mais fácil. Basta usar System.getProperty. Por exemplo, em uma máquina Windows 2003:

java.version = 1.5.0_02
os.arch = x86
os.name = Windows 2003
os.version = 5.2

Em uma máquina Linux (Sun JVM)
java.version=1.3.1_04
os.arch=i386
os.name=Linux
os.version=2.4.19-4GB

ou (IBM JVM)
java.version=1.3.1
os.arch=x86
os.name=Linux
os.version=2.4.19-4GB

por exemplo.



[WWW]
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team