Internet mit C

Diskutiere Internet mit C im C/C++ Forum im Bereich Programmieren unter Linux/Unix; 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...

  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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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. #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 ;)
     
  11. 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. Vorschläge für Next Generation Internet gesucht

    Vorschläge für Next Generation Internet gesucht: Die von der Europäischen Kommission gegründete Initiative »NGI Pointer« will freie Projekte unterstützen, die das Internet als Plattform...
  2. Artikel: Zukunft IoT – Diese 5 Entwicklungen werden das Internet der Dinge prägen

    Artikel: Zukunft IoT – Diese 5 Entwicklungen werden das Internet der Dinge prägen: IoT-Technologie geht weit über Smartwatches oder vernetzte Lautsprecher hinaus, denn auch die Industrie oder der Straßenverkehr können vom...
  3. Rückzieher bei Nominierung von Mozilla als Internet-Schurke

    Rückzieher bei Nominierung von Mozilla als Internet-Schurke: Der britische Internet-Provider-Verband ISPA hat die Nominierung von Mozilla als Internet-Schurke 2019 zurückgezogen und gleich die ganze...
  4. Mozilla als Internet-Schurke 2019 nominiert

    Mozilla als Internet-Schurke 2019 nominiert: Der britische Internet-Provider-Verband ISPA hat Mozilla als Internet-Schurke 2019 nominiert. Der bizarre Grund: Das von Mozilla propagierte DNS...
  5. Was macht ihr im Internet am liebsten?

    Was macht ihr im Internet am liebsten?: Mich würde mal interessieren, wie ihr euch eure Zeit in Internet am liebsten vertreibt?
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden