Internet mit C

Dieses Thema im Forum "C/C++" wurde erstellt von Metall, 24.07.2007.

  1. Metall

    Metall Grünschnabel

    Dabei seit:
    17.07.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo,

    Ich habe ein Code in C geschrieben, der sich mitenem Server verbinden soll.
    Den Code habe ich vorher schon mal mit php ausprobiert und da hat er noch funktioniert.:think:
    Nur in C verbindet sich der code nicht mit dem Server. Der Fehler liegt in der Funktion connect();:hilfe2:

    Hier ist der Code:

    Code:
    #include <stdio.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <signal.h>
    #include <stdlib.h>
    #include <string.h>
    #include <netdb.h>
    
    #define BUF_SIZ 4096
    
    int main( int argc, char **argv) {
    	char buff[BUF_SIZ];
    	char msg[BUF_SIZ];
    	int s;
    	struct sockaddr_in server;
    	struct hostent *host_info;
    	unsigned long addr;
    	char str[];
    /* Ip Adresse holen*/
    	host_info = gethostbyname("loquor.de");
    	memcpy( (char *)&server.sin_addr,
    	 host_info->h_addr, host_info->h_length );
    	server.sin_family = AF_INET;
    /*Http Port 80.*/
    	server.sin_port = 80;
    	printf("Createing Socket:...");
    /*Socket erstellen.*/
    	s = socket(AF_INET, SOCK_STREAM, 0);
    	if (s <= 0) {
    		printf("Error.\n");
    		return EXIT_SUCCESS;
    	} else {
    		printf("Ok.\n");
    	}
    	printf("%s", sizeof(server));
    	printf("%s", (struct sockaddr*)&server);
    	printf("Connecting with server:...");
    	char result;
    /*Mit dem Server verbinden.*/
    	result = connect(s,(struct sockaddr*)&server,sizeof(server));
    	if (result <= 0) {
    		printf("Error.\n");
    		return EXIT_SUCCESS;
    	} else {
    		printf("Ok.\n");
    	}
    /*HTTP 1.1 Anfrage:*/
    	char send[] = "GET /mvs/test.txt HTTP/1.1\\n"
    					"Host: www.loquor.de\r\n\r\n";
    	strcat(send, "\n");
    /*HTTP 1.1 Anfrage senden*/
    	printf("Sending Socket:...");
    	if (send(s, send, strlen(send))) {
    		printf("Ok.\n");
    	} else {
    		printf("Error.\n");
    		return EXIT_SUCCESS;
    	}
    /*Datei vom Server empfangen.*/
    	printf("Getting file:...");
    	int count = recv(s, buff2, 1024, 0);
    	if (count <= 0) {
    		printf("Error.\n");
    		return EXIT_SUCCESS;
    	} else {
    		printf("Ok.\n");
    	}
    /*'\0' an die empfangene Variable anhängen*/
    	buff[count] = '\0';
    /*Ergebnis ausgeben*/
    	printf("Ergebnis des Servers: %s\n", buff);
    	close(s);
    	return EXIT_SUCCESS;
    }
    
    Ich hoffe Ihr könnt mir helfen...

    mfg
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Buchi

    Buchi Routinier

    Dabei seit:
    25.05.2006
    Beiträge:
    375
    Zustimmungen:
    0
    Ort:
    Wien
    Mit welchem Befehl wolltest du denn compilen?
    Sieht mir soweit ok aus, könnte aber auch was übersehen haben.
    Was gibt er denn genau für ne Fehlermeldung aus?

    MfG,
    Buchi
     
  4. Metall

    Metall Grünschnabel

    Dabei seit:
    17.07.2007
    Beiträge:
    5
    Zustimmungen:
    0
    ich complimire den mit gcc.
    Ne fehlermeldung bekomme ich nicht.
    Nur durch meine if-schleifen erhalte ich beim ausführen:

    Code:
    Createing Socket:...Ok.
    Connecting with server:...Error.
    
     
  5. #4 P3AC3MAK3R, 24.07.2007
    P3AC3MAK3R

    P3AC3MAK3R Eroberer

    Dabei seit:
    20.07.2007
    Beiträge:
    59
    Zustimmungen:
    0
    Ort:
    NRW
  6. #5 Mµ*e^13.5_?¿, 24.07.2007
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    Entschuldigung, aber in dem Code sind so viele Fehler drin, dass man mühe hat erstmal zu dem Fehler zu kommen, den du beschrieben hast.
    Stell hier zumindest einen Code rein, der sich fehlerfrei kompilieren lässt.
    Und runtime-errors sind da ja noch gar nicht dabei, wie zum Beispiel solche schönen Sachen:
    Code:
    printf("%s", sizeof(server));
     
  7. Metall

    Metall Grünschnabel

    Dabei seit:
    17.07.2007
    Beiträge:
    5
    Zustimmungen:
    0
    @ Mµ*e^13.5_?¿: Hast recht.

    Sorry, das war die falsche version, hier müsste eine version sein, die geht...

    Code:
    #include <stdio.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <signal.h>
    #include <stdlib.h>
    #include <string.h>
    #include <netdb.h>
    
    #define BUF_SIZ 4096
    
    int main( int argc, char **argv) {
    	char buff[BUF_SIZ];
    	char msg[BUF_SIZ];
    	int s;
    	struct sockaddr_in server;
    	struct hostent *host_info;
    	unsigned long addr;
    /* Ip Adresse holen*/
    	host_info = gethostbyname("loquor.de");
    	memcpy( (char *)&server.sin_addr,
    	 host_info->h_addr, host_info->h_length );
    	server.sin_family = AF_INET;
    /*Http Port 80.*/
    	server.sin_port = 80;
    	printf("Createing Socket:...");
    /*Socket erstellen.*/
    	s = socket(AF_INET, SOCK_STREAM, 0);
    	if (s <= 0) {
    		printf("Error.\n");
    		return EXIT_SUCCESS;
    	} else {
    		printf("Ok.\n");
    	}
    
    	printf("Connecting with server:...");
    	char result;
    /*Mit dem Server verbinden.*/
    	result = connect(s,(struct sockaddr*)&server,sizeof(server));
    	if (result <= 0) {
    		printf("Error.\n");
    		return EXIT_SUCCESS;
    	} else {
    		printf("Ok.\n");
    	}
    /*HTTP 1.1 Anfrage:*/
    	char send[] = "GET /mvs/test.txt HTTP/1.1\\n"
    					"Host: www.loquor.de\r\n\r\n";
    	strcat(send, "\n");
    /*HTTP 1.1 Anfrage senden*/
    	printf("Sending Socket:...");
    	if (0 <= write(s, send, strlen(send))) {
    		printf("Ok.\n");
    	} else {
    		printf("Error.\n");
    		return EXIT_SUCCESS;
    	}
    /*Datei vom Server empfangen.*/
    	printf("Getting file:...");
    	int count = recv(s, buff, 1024, 0);
    	if (count <= 0) {
    		printf("Error.\n");
    		return EXIT_SUCCESS;
    	} else {
    		printf("Ok.\n");
    	}
    /*'\0' an die empfangene Variable anhängen*/
    	buff[count] = '\0';
    /*Ergebnis ausgeben*/
    	printf("Ergebnis des Servers: %s\n", buff);
    	close(s);
    	return EXIT_SUCCESS;
    }
    
    mfg
     
  8. Uschi

    Uschi Endverbraucher

    Dabei seit:
    27.03.2006
    Beiträge:
    177
    Zustimmungen:
    0
    hab mir den code nicht ganz angeschaut, aber mit dem fehler "error" kann man auch wenig anfangen ersetze printf("error") lieber durch perror ("Fehler:"); dann weisst du was schief gelaufen ist.
     
  9. Metall

    Metall Grünschnabel

    Dabei seit:
    17.07.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Danke, aber das hilft mir leider auch nicht weiter.
    Die Antwort lautet: Unknownerror.
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. #9 Mµ*e^13.5_?¿, 25.07.2007
    Zuletzt bearbeitet: 25.07.2007
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    Also hier lautet die Antwort "Connection refused".
    Ich vermute mal, dass beim festlegen der Adresse irgendwas im Argen liegt.

    Edit: Na da haben wir ja schonmal was
    Die Port-Nummer muss im rechten Format vorliegen.
    Code:
    /*Http Port 80.*/
    	server.sin_port = htons(80);
    Und bei connect ist der Fehlerfall als -1 definiert
    Code:
    /*Mit dem Server verbinden.*/
    	result = connect(s,(struct sockaddr*)&server,sizeof(server));
    	if (result == -1) {
    Und wenn dann der HTTP-Request noch richtig ist:
    Code:
    /*HTTP 1.1 Anfrage:*/
    	char send[] = "GET /mvs/test.txt HTTP/1.1\n"
    					"Host: www.loquor.de\n\n";
    /*HTTP 1.1 Anfrage senden*/
    dann funktioniert das ;)
     
  12. Metall

    Metall Grünschnabel

    Dabei seit:
    17.07.2007
    Beiträge:
    5
    Zustimmungen:
    0
    @ Mµ*e^13.5_?¿: Danke...ich bin sprachlos...es geht...
     
Thema:

Internet mit C

Die Seite wird geladen...

Internet mit C - Ähnliche Themen

  1. Linus Torvalds über das Internet der Dinge

    Linus Torvalds über das Internet der Dinge: Erstmals hat Linus Torvalds, Initiator des Linux-Kernels, auf dem »Embedded Linux Conference & OpenIoT Summit« der Linux Foundation gesprochen und...
  2. LinusTorvalds über das Internet der Dinge

    LinusTorvalds über das Internet der Dinge: Erstmals hat Linus Torvalds, Initiator des Linux-Kernels, auf dem »Embedded Linux Conference & OpenIoT Summit« der Linux Foundation gesprochen und...
  3. Mozilla Foundation 2020 Strategie: Mehr Einsatz für offenes Internet

    Mozilla Foundation 2020 Strategie: Mehr Einsatz für offenes Internet: Mark Surman, Direktor der Mozilla Foundation, hat einen Entwurf der neuen Strategie vorgestellt, die die Organisation in den nächsten fünf Jahren...
  4. Internet-Experten empfehlen der FCC Open-Source-Software für Router

    Internet-Experten empfehlen der FCC Open-Source-Software für Router: 260 Internetexperten fordern in einem offenen Brief an die Federal Communications Commission (FCC), von ihren kürzlich veröffentlichten Plänen...
  5. Internet-Experten empfehlen der FCC Open-Source-Software für Router

    Internet-Experten empfehlen der FCC Open-Source-Software für Router: 260 Internetexperten fordern in einem offenen Brief an die Federal Communications Commission (FCC), von ihren kürzlich veröffentlichten Plänen...