Nome maquina /ou IP

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Nome maquina /ou IP

Mensagem por ederxc »

Bom dia !

Amigos , teria alguma função do Xh que retorne o NOME da maquina que voce atribui na instalação da mesma

winxp / nome da maquina = servidor

winxp / nome da maquina =terminal01


se tiver uma função que retorno o IP , pode ser tbm



...Intenção ..

Algumas tarefas tais como , criar DB e indexar na primeira inicialização do .EXE na maquina , são funções que só devem serem executadas , no servidos , por este motivo gostaria de saber o nome da maquina/IP , para
realizar este tipo de controle

té ++ :)Pos
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Buenas Eder, uma boa semana de trabalho pra vc, segue abaixo os dois exemplos:

Ip do Micro:

Código: Selecionar todos

PROCEDURE GetIp()
LOCAL aHosts
LOCAL cName
Local cEstacao:=netname(.f.)
InetInit()
aHosts := InetGetHosts( cEstacao )
IF aHosts == NIL
   aHosts := InetGetAlias( cEstacao )
ENDIF
IF Empty(aHosts)
   aHosts := InetGetAlias( cEstacao )
ENDIF
InetCleanup()
RETURN  ahosts[1 ]
Nome do Micro:

Código: Selecionar todos

NETNAME()
Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Coincidentemente uso uma rotina que faz isso, sem precisar de nomes. Não sei se é bem isso que está precisando, mas la vai:

Código: Selecionar todos

Function Chek
Private local2:= savenv(00,00,maxrow(),maxcol())
do while .t.
   use cdctr000 excl new // guarda a ultima em que foi feita reindexação

   // aberto em excl outros usuarios não conseguirão abrir, deduzindo  que  já existe algum terminal realizando a manutenção.                               

   if neterr()
      wvt_messagebox("AGUARDE, REORGANIZACAO EM ANDAMENTO","ATENCAO",48)
      loop
   else
      exit
   endif
enddo
if (ctrdat >= Date()-7) // se foi feita a menos 7 dias, sist inicia normal
   rstenv(local2)
   return
else
   reindexa ou então faz manutenção nos arquivos, etc ... e ao final libera o arquivo cdctr000, para que outros terminais possam ler
Espero ter ventilado um pouco.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

sygecom escreveu:Buenas Eder, uma boa semana de trabalho pra vc, segue abaixo os dois exemplos:

Ip do Micro:

Código: Selecionar todos

PROCEDURE GetIp()
LOCAL aHosts
LOCAL cName
Local cEstacao:=netname(.f.)
InetInit()
aHosts := InetGetHosts( cEstacao )
IF aHosts == NIL
   aHosts := InetGetAlias( cEstacao )
ENDIF
IF Empty(aHosts)
   aHosts := InetGetAlias( cEstacao )
ENDIF
InetCleanup()
RETURN  ahosts[1 ]
Nome do Micro:

Código: Selecionar todos

NETNAME()
Abraços
Leonardo Machado
Leo , como sempre matando a pau , valeu !



Alaminojunior , Eu estava fazendo dessa forma , porem creio que seja mais conveniente deixar para o servidor fazer as rotinas de criação e manutenção ...


Grato pela atenção ,e uma boa semana de trabalho a todos , 2008 , agora vai ....
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

creio que seja mais conveniente deixar para o servidor fazer as rotinas de criação e manutenção ...
Está coberto de razão.
Mas explica melhor, sempre que o sistema for iniciado, ele verifica se a maquina é o servidor e então executa a rotina de manutenção ? É isso ?
Se for, vou pegar carona nessa idéia, incluindo esta etapa dentro da que já tenho.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

alaminojunior escreveu:
creio que seja mais conveniente deixar para o servidor fazer as rotinas de criação e manutenção ...
Está coberto de razão.
Mas explica melhor, sempre que o sistema for iniciado, ele verifica se a maquina é o servidor e então executa a rotina de manutenção ? É isso ?
Se for, vou pegar carona nessa idéia, incluindo esta etapa dentro da que já tenho.

Não , somente quando manda indexar ...

Mas veja bem ja vou voltando atraz no que falei rsrs , analizando tecnicamente ficaria muito bom , porêm , caso seu cliente queira formatar o servidor e chamar algum tecnico pra fazer o serviço e esse tecnico , mudar o nome da maquina , ae ja vai dar problema em seu sistema , mas isso é apenas uma ipótese ! como disse anteriormente , TECNICAMENTE vai funcionar legau ....

PS: Ja fiz os testes e ficou maneiro.
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Algumas tarefas tais como , criar DB e indexar na primeira inicialização do .EXE na maquina , são funções que só devem serem executadas , no servidos ,
Por que "só no servidor"? Não seria melhor "só por alguém com poderes para", alguém que deveria poder fazer qualquer coisa a partir de qualquer PC da rede, não só no servidor?

Eu, faço por usuário. Se, na inicialização do sistema, faltar algum DBF ou algum CDX, o ADM tem que entrar em qualquer um dos PCs e botar a casa em ordem.
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Melhor ainda. :D
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Eu faço que nem o Eolo, mas Eder se assim mesmo vc quiser usar esse tipo de metodo nd o impede de ve ter uma opção de parametros do seu sistema que o usuario defina qual o nome ou IP da maquina que serve como SERVIDOR, eu uso isso para acesso a banco de dados MYSQL.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Idéias são sempre bem vidas , adoro idéias !
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mensagem por asimoes »

Pessoal,

Eu fiz um sistema que só faz indexação, e é agendado para um determinado horário no servidor como um serviço do windows (usando o srvany), quando o sistema inicia é enviado uma mensagem para o usuário sair do sistema, se estiver usando, mas pelo horário é pouco provável que alguém esteja usando (02:00 am). e também durante a indexação eu verifico se alguém entrou no sistema e ai eu mando o cara pro espaço (PELO SISTEMA), é radical, mas todo mundo já foi avisado e é por ai mesmo. (rs) E funciona que é uma maravilha. Executando a rotina no servidor não há colisão de rede e a indexação é super rápida, pelo motivo de ser local. Os indices de todo o sistema estão definidos em um dbf onde contém o nome do dbf, rdd, chave, condições, se unique key, data da indexação, hora e um campo controle se o indice foi criado com sucesso.

Asimoes

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Mensagem por lucimauro »

Pelo que entendi voce quer indentifcar o servidor certo.
voce pode usar :

if left(execname(),1)==[C] indentifica o servidor

essa funcao retorna o nome e o caminho do executavel.
entao se a primeira letra for C entao voce esta no servidor.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Amigos , grato pela contribuição de idéias ...Porêm como disse acima , vai de cada um avaliar de cliente para cliente como esse código deve ser escrito

Lucimauro , no seu caso fica bom se o .EXE estiver no servidor , em uma rede muito extenção com muitos acessos ao servidor creio que seja mais "coerente" deixar um .EXE para cada maquina e passar uma String como parametro para os DBF´s




Asimoes ,Sua indicação creio que seja a mais "chiq"pois voce não vai mais precisar por a mão , mas pra isso tem que ter uma rede bem estruturada e usuarios bem "domesticados no chicote" , tem cliente que desliga servidor !




RESUMÃO

Ta todo mundo correto ao meu ponto de vista ,vale de cada um avaliar como proceder ;E cheio de dicas assim consegui ter uma idéia de como criar a minha rotina para suprir as necessidades deste sistema que estou desenvolvendo ...


té++ :)Pos
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

ederxc escreveu:Lucimauro , no seu caso fica bom se o .EXE estiver no servidor , em uma rede muito extenção com muitos acessos ao servidor creio que seja mais "coerente" deixar um .EXE para cada maquina e passar uma String como parametro para os DBF´s
Se bem que esse procedimento, numa rede grande, adiciona muita dificuldade na hora de atualizar os vários .EXEs espalhados pelas extensões.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Maligno escreveu:
ederxc escreveu:Lucimauro , no seu caso fica bom se o .EXE estiver no servidor , em uma rede muito extenção com muitos acessos ao servidor creio que seja mais "coerente" deixar um .EXE para cada maquina e passar uma String como parametro para os DBF´s
Se bem que esse procedimento, numa rede grande, adiciona muita dificuldade na hora de atualizar os vários .EXEs espalhados pelas extensões.
Concordo !
C:\Xharbour\Xdev\Fw\VSX
Responder