O Codico não esta compilando, e também esta apresentando um erro, alguém sabe resolver?

1. O Codico não esta compilando, e também esta apresentando um erro, alguém sabe resolver?

Carlos Omar Marinho Cardosos Dos Omar
Carlos_Omar

(usa Kali)

Enviado em 07/02/2019 - 18:30h

#include <stdio.h>
#include <netdb.h>

unsigned main(){
int sock;
int conexao;

struct sockaddr_in alvo;

sock = socket(AF_INET, SOCK_STREAM, 0);
alvo.sin_family = AF_INET;
alvo.sin_port = htons(80);
alvo.sin_addr.s_addr = inet_addr("192.168.0.1");

conexao = connect(sock, (struct sockaddr *)&alvo, sizeof alvo);

if(conexao == 0)
{
printf("Conetado...");
}
else{
printf("Erro...");
}



  


2. Re: O Codico não esta compilando, e também esta apresentando um erro, alguém sabe resolver?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 07/02/2019 - 22:20h

Há vários erros no código. Mesmo assim, seria bom que você dissesse qual mensagem de erro está lhe incomodando, e se ela ocorre durante a compilação, na ligação do executável ou na execução.

#include <stdio.h>
#include <netdb.h>


Faltaram vários cabeçalhos, tais como <sys/socket.h>, <netinet/in.h> e <arpa/inet.h>.


unsigned main(){


O tipo de retorno de main() tem de ser int, não unsigned. E os argumentos dessa função, se você estiver usando C, devem ser ou “void” ou “int argc, char **argv”.

        int sock;
int conexao;

struct sockaddr_in alvo;

sock = socket(AF_INET, SOCK_STREAM, 0);


Teoricamente, ao invocar socket() você deveria usar PF_INET, em lugar de AF_INET, porque socket() não lida diretamente com endereços, mas sim com “domínios” ou “famílias de protocolos” (protocol families). Quem lida com endereços são bind(), connect() e accept(), e mais algumas outras.

(Mas isso é um pouco de preciosismo de quem trabalhou durante muito tempo com BSD, que foi onde surgiu a API de sockets. Na prática, quase todos os sistemas, inclusive o BSD, fazem as constantes PF_* com os mesmos valores das constantes AF_* correspondentes, e alguns padrões, incluindo o POSIX, nem sequer mencionam as constantes PF_* — erroneamente, no meu entender.)

        alvo.sin_family = AF_INET;
alvo.sin_port = htons(80);
alvo.sin_addr.s_addr = inet_addr("192.168.0.1");

conexao = connect(sock, (struct sockaddr *)&alvo, sizeof alvo);

if(conexao == 0)


A variável conexao não é estritamente necessária. Você poderia colocar a chamada a connect() dentro da expressão usada para o if, comparando-a diretamente com o valor de retorno desejado, como mostra o exemplo a seguir.
    if(connect(sock, (struct sockaddr *)&alvo, sizeof alvo)==0) /* ... */ 


        {
printf("Conetado...");
}
else{
printf("Erro...");
}


Faltou, acima, o fechamento do bloco de implementação de main().


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


3. Obrigado

Carlos Omar Marinho Cardosos Dos Omar
Carlos_Omar

(usa Kali)

Enviado em 07/02/2019 - 23:39h

Muito Obrigado Pela Ajuda, você me ajudo muito e também agradeço pela critica construtiva graças a isso abriu um leque de estudos que irei começar!!!


4. Re: O Codico não esta compilando, e também esta apresentando um erro, alguém sabe resolver?

Nick Us
Nick-us

(usa Slackware)

Enviado em 06/03/2019 - 20:26h

Carlos_Omar escreveu: Muito Obrigado Pela Ajuda, você me ajudo muito e também agradeço pela critica construtiva graças a isso abriu um leque de estudos que irei começar!!!

Legal que o Paulo te ajudou, mas acho que no mínimo como agradecimento a isso, vc não poderia esqueçer de fechar o tópico marcando ele como resolvido, e escolher a melhor resposta! É uma questão de etiqueta, e também respeito a quem com carinho ajuda!
Namastê








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts