The UNIX and Linux Forums  

Go Back   O UNIX e Linux Forum > Top Fóruns > Alto Nível de programação
.
google unix.com



Alto Nível de programação Post perguntas sobre C, C + +, Java, SQL, e outras linguagens de programação aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Endereço IP da máquina harneet2004us UNIX & avançada para usuários experientes 3 04-16-2008 05:54
Como máquina Unix endereço IP asutoshch Programação Shell Script e 6 04-30-2006 09:14
como obter o endereço IP de uma máquina mridula IP Networking 5 11-02-2005 09:21
Restringir o acesso a uma máquina pelo endereço IP patch UNIX para Dummies Perguntas & Respostas 2 10-20-2003 03:46
Máquina Alterando o endereço IP kkinnon UNIX & avançada para usuários experientes 7 08-27-2002 03:17

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 08-25-2003
Ahsan Ahsan is offline
Usuário
  
 

Join Date: Aug 2003
Local: Austrália
Posts: 9
Question Como obter o endereço IP da máquina?

Existe alguma chamada API para obter o endereço IP de uma máquina? Eu sei que há função que retorna nome da máquina, gethostname (). Mas eu preciso do IP.

Thanks & Regards,
Ahsan
  #2 (permalink)  
Old 08-25-2003
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.131
Ver gethostbyname ()
  #3 (permalink)  
Old 10-10-2003
DreamWarrior DreamWarrior is online now
Usuário
  
 

Join Date: Oct 2003
Lugares: 70
solavanco

Ei, você poderia ser todos um pouco mais específico sobre este um. Eu li a página man para gethostbyname e parece ser um regresso genéricos interno formato de endereço. Isto tem de ser convertido em um ponto notação endereço IP, e não sei como fazê-lo.

Além disso, para ampliar esta um pouco, é possível obter as informações a partir de um arquivo descritor que é um soquete. Isto é, se a única peça de informação que tenho sobre a conexão é o arquivo descritor, posso chegar a partir dessa estrutura sockaddr_in passar para gethostbyname para depois converter em um IP?

Obrigado!
  #4 (permalink)  
Old 10-12-2003
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.131
Re: galo

Citação:
Originalmente postado por DreamWarrior
Ei, você poderia ser todos um pouco mais específico sobre este um. Eu li a página man para gethostbyname e parece ser um regresso genéricos interno formato de endereço. Isto tem de ser convertido em um ponto notação endereço IP, e não sei como fazê-lo.
A melhor solução para fazer coisas como esta é para procurar algum código fonte. Existe uma tonelada de código fonte na Internet. E existem vários programas que a formatação de endereços IP. Mas estou preso no escritório à espera de uma tecnologia, e não tenho nada melhor para fazer, então ...
Código:
#ifdef __STDC__
#define PROTOTYPICAL
#endif
#ifdef __cplusplus
#define PROTOTYPICAL
#endif

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <arpa/inet.h>


#ifdef PROTOTYPICAL
int main(int argc, char *argv[])
#else
main(argc,argv)
char *argv[];
#endif
{
	char *mess;
	struct hostent *hp;
	int dumpall;

	dumpall=0;
	while(*++argv) {
		if(!strcmp(*argv,(char *)"-d")) {
			dumpall=!dumpall;
			continue;
		}
		/*
		 *  Call gethostbyname for current argument
		 */
		if(! (hp = gethostbyname(*argv))) {
			switch(h_errno){
					case HOST_NOT_FOUND:  
						mess=(char *)"Not Found";
						break;
					case TRY_AGAIN:  
						mess=(char *)"Time Out";
						break;
					case NO_RECOVERY:  
						mess=(char *)"No Recovery";
						break;
					case NO_ADDRESS:  
						mess=(char *)"No Address";
						break;
					default: 
						mess=(char *)"unknown error";
						break;
			}
			printf("%s  %s\n", *argv, mess);

		} else {
			printf("%s  %s  %s \n", *argv, hp->h_name,
				inet_ntoa(*(struct in_addr *)(hp->h_addr)));
			if(dumpall) {
				printf("  addresses:\n");
				while(*(hp->h_addr_list)){
					printf("      %s \n", 
						inet_ntoa(*(struct in_addr *)*(hp->h_addr_list)++));
				}
				printf("  aliases:\n");
				while(*(hp->h_aliases)){
					printf("      %s \n",*(hp->h_aliases)++);
				} 
			}
		}
	}
	exit(0);
}

Isso deve funcionar com qualquer C ou C + + compilador. Mas eu só testado em HP-UX.

Citação:
Originalmente postado por DreamWarrior

Além disso, para ampliar esta um pouco, é possível obter as informações a partir de um arquivo descritor que é um soquete. Isto é, se a única peça de informação que tenho sobre a conexão é o arquivo descritor, posso chegar a partir dessa estrutura sockaddr_in passar para gethostbyname para depois converter em um IP?

Obrigado!
Yow! Temos 4 horas tempo de resposta.

Você não pode fazer isso e, geralmente, exige portably raiz poder. Olha o código fonte para lsof. Ele faz coisas assim.

Mas todos os soquetes estruturas armazenar o endereço IP não nomes de domínio
  #5 (permalink)  
Old 10-16-2003
DreamWarrior DreamWarrior is online now
Usuário
  
 

Join Date: Oct 2003
Lugares: 70
Caramba, o inet_ntoa não vai funcionar. Eu quero, pelo menos, ser capaz de obter o IP após um convite para aceitar na tomada .... Eu vou procurar, a menos que todos estão entediados e pode me ajudar. Se eu encontrar alguma coisa, I'll post it up ... muito ruim, ninguém por aqui como uma boa TCP para Unix livro.

BTW, só por curiosidade, você está em Rockville e utilizar máquinas HP-UX, qualquer chance que você está em um FAA contrato?

Última edição por DreamWarrior; em 10/16/2003 11:09..
  #6 (permalink)  
Old 10-16-2003
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.131
Porque não vai inet_ntoa trabalho? Parece-me trabalhar sempre tentar. Publique o seu código, talvez eu ou alguém vai ver uma coisa. E existem dezenas de servidores com o código fonte disponível para você encontrar na Internet. A maioria dos clientes são capazes de registrar os endereços IP.

A melhor rede de programação livro é UNIX Network Programming por Rich Stevens.

Vou ignorar a sua busca de pistas adicionais para a minha identidade.
  #7 (permalink)  
Old 10-23-2003
ComPlayer ComPlayer is offline
Usuário
  
 

Join Date: Oct 2003
Posts: 2
É tão difícil de ler a sua fonte code.hehe.
O que devo fazer para a minha primeira etapa de aprendizagem de programação C rede?
talvez não é fácil de responder.
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 05:47.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0