Thema geschlossen
Ergebnis 1 bis 5 von 5

Thema: (Gelöst) C-Programmierung: TCP/IP Client stürzt ab

  1. #1
    Newbie
    Registriert seit
    28.01.2009
    Beiträge
    5

    Standard (Gelöst) C-Programmierung: TCP/IP Client stürzt ab

    Hallo, ich habe eine Frage, und zwar versuche ich gerade über ein ad-hoc netzwerk eine Verbindung zwischen zwei Rechnern über Sockets aufzubauen. Also damit ist ein Rechner client und der andere server. Der Server haut hin auf SUSE 11.1. Nur der Client bereitet mir Schwierigkeiten indem er diese Meldung ausspuckt:
    ./hello 192.168.12.11 80
    Socket created!
    Speicherzugriffsfehler

    Also erstellt er einen Socket und kann aber hat dann ein Problem.
    Ich habe das Ganze aus einem Beispiel aus Your definite guide to Linux Network Programming.

    Vielleicht erkennt ja einer von Euch auf Anhieb wo der Fehler liegt.. die Bibliotheken sind natürlich eingebunden, und das c-Programm wird fehlerfrei kompiliert.

    Code:
    #include <stdio.h>
    #include <sys/types.h>		
    #include <sys/socket.h>
    #include <netdb.h>
    #include <stdlib.h>		
    #include <string.h>
    
    const char APRESSMESSAGE[] = "Hello - APRESS FROM AND FOR PROFESSIONAL\n";
    int main(int argc, char *argv[])
    {
    	int simpleSocket=0;
    	int simplePort=0;
    	int returnStatus=0;
    	char buffer[256] = "";
    	struct sockaddr_in simpleServer;
    
    	if(3 != argc){
    		fprintf(stderr, "USAGE %s <port>\n", argv[0]);
    		exit(1);
    	}
    
    	/*creating streaming socket*/
    	simpleSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    	
    	if(simpleSocket == -1) {
    		fprintf(stderr, "Could not create Socket!\n");
    		exit(1);
    	}
    	else {
    		fprintf(stderr, "Socket created!\n");
    	}
    	/*retrieve the port number for connecting*/
    	simplePort=atoi(argv[3]);
    	
    	/*set up the address structure */
    	/* use IP adress argument to bind all local addresses */
    	bzero(&simpleServer, sizeof(simpleServer));
    	simpleServer.sin_family=AF_INET;
    	inet_addr(argv[2],&simpleServer.sin_addr.s_addr);
    	simpleServer.sin_port=htons(simplePort);
    
    	/* connect to the address and port with our socket*/
    	returnStatus=bind(simpleSocket,(struct sockaddr *)&simpleServer,sizeof(simpleServer));
    	
    	if (returnStatus==0) {
    		fprintf(stderr,"Connect successful!\n");
    	}
    	else {
    		fprintf(stderr,"Could not connect to address!\n");
    		close(simpleSocket);
    		exit(1);
    	}
    	
    	/*get the message from the Server*/
    	returnStatus=read(simpleSocket,buffer,sizeof(buffer));
    
    	if(returnStatus > 0 ){
    		printf ("%d: %s", returnStatus, buffer);
    	}		
    
    	else {
    		fprintf(stderr, "Return Status = %d \n", returnStatus);
    	}
    	
    	close(simpleSocket);
    	return 0;
    }
    
    //Edit (RM): Für Konsolenausgaben/Programmcode CODE-Tags verwenden.

    //Edit: Zum zweiten Mal CODE-Tags gesetzt, ab sofort machst Du das dann bitte selbst.

    Achja, ich weiß nicht genau welche Adresse ich beim ausführen des Befehls verwenden muss, und welcher Art die zweite Eingabe ist. Deswegen könnte der Fehler also darin begründet sein. Danke RM fürs editieren, das schaffe ich ab jetzt
    Zum Zweiten könnte es mit dem localhost 127.0.0.1 zusammenhängen??
    Wie Ihr seht bin ich noch nicht sehr weit, aber ich werde es nochmal auf einem anderen Weg versuchen, und zwar habe ich diesen Link gefunden.
    TCP Echo Server + Client in C › Forum › ubuntuusers.de

    Ich glaube da sind bei mir noch einige generelle Unklarheiten, die ich ersteinmal durch anlesen ausmerzen sollte. Also für hints bin ich auch dankbar.

    Und hier auch nochmal die Ausgabe nach kompilieren mit -Wall
    gcc socketclient.c -o hello -Wall
    socketclient.c: In function ‘main’:
    socketclient.c:58: warning: implicit declaration of function ‘inet_addr’
    socketclient.c:69: warning: implicit declaration of function ‘close’
    socketclient.c:74: warning: implicit declaration of function ‘read’

    Danke für die Antworten!
    Geändert von Hauke (12.02.2009 um 14:03 Uhr)

  2. #2
    Moderator Avatar von Jacko
    Registriert seit
    07.04.2006
    Beiträge
    976

    Standard AW: Zwei Rechner über Socket verbinden

    Folgende Zeile (argv[3] durch [argv[2] ersetzen)

    Code:
     simplePort=atoi(argv[2]);
    

    Grüße Jacko

  3. #3
    Administrator Avatar von Rain_Maker
    Registriert seit
    06.02.2006
    Beiträge
    5,458

    Standard AW: Zwei Rechner über Socket verbinden

    Und damit man auch weiß, wie das Ding überhaupt zu bedienen ist:

    Code:
                    fprintf(stderr, "USAGE %s <port>\n", argv[0]);
    
    in

    Code:
                    fprintf(stderr, "USAGE %s <IP-address> <port>\n", argv[0]);
    
    ändern.
    "Programming today is a race between software engineers striving to build better & bigger idiot-proof programs and the Universe trying to produce bigger & better idiots. So far, the Universe is winning." (Rick Cook)

    Dies ist ein _öffentliches_ Supportforum, keinerlei Support per PN, EMail oder Instant Messenger.

    openSUSE 11.4 - 3.2.X-desktop - fluxbox 1.3.2

    For Windows-Problems - Reboot / For Linux-Problems - BE ROOT!
    (==> Und hier das wirkliche "Geheimnis meines Erfolges")

  4. #4
    Moderator Avatar von Jacko
    Registriert seit
    07.04.2006
    Beiträge
    976

    Standard AW: Zwei Rechner über Socket verbinden

    Auf "stderr" sollte man auch wirklich nur Fehler printen, also verwende für normal Ausgaben entweder printf(...) oder fprintf(stdout,...)

  5. #5
    Newbie
    Registriert seit
    28.01.2009
    Beiträge
    5

    Standard AW: Zwei Rechner über Socket verbinden

    hmm.. ja danke schonmal, das ganze rumprobieren hat mir schon sehr geholfen, jetzt komme ich mit W.Richards Stevens Unix Networkprogramming schon besser klar. Ich denke es wird noch einiges an Zeit vergehen, bis ich was wirklich sinnvolles bastele ich meld mich gerne wieder wenn ich dann weiter bin.

Thema geschlossen

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. (Gelöst) Opera stürzt bei Java ab (libxcb)
    Von Flack im Forum SuSE System konfigurieren
    Antworten: 3
    Letzter Beitrag: 27.03.2008, 11:17
  2. (Gelöst) Karm stürzt ab
    Von skywalka im Forum SuSE Office
    Antworten: 18
    Letzter Beitrag: 14.07.2007, 09:30
  3. (Gelöst) Firefox stürzt bei Arcor-Login ab
    Von Cyrus im Forum SuSE Internetkonfiguration
    Antworten: 6
    Letzter Beitrag: 28.05.2007, 11:37
  4. (Gelöst) aticonfig stürzt ab (fglrx 8.36.5)
    Von dioho im Forum SuSE Treiber
    Antworten: 7
    Letzter Beitrag: 19.05.2007, 11:29
  5. Antworten: 4
    Letzter Beitrag: 05.01.2007, 16:03

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87