send() hängt Programm auf



  • Hallo,

    ich versuche gerade ein wenig mit sockets unter c zu spielen (Linux Fedora 😎 und leider hängt sich das Programm bei dem funktionsaufruf send() auf.
    Ohne Fehlermeldung, die Zeilen darunter werden nicht mehr ausgeführt.

    #include <stdio.h>
        #include <string.h> 
    
        #include <sys/socket.h> 
         #include <sys/types.h>
         #include <netinet/in.h>
         #include <inttypes.h>
    	#include <arpa/inet.h>
    
        #define MYPORT 3491
       #define DEST_IP   "132.241.5.10"
        #define DEST_PORT 23
    
        int main(int argc, char** argv)
        {
            int sockfd;
            struct sockaddr_in my_addr;
     struct sockaddr_in dest_addr;
    
    	// Für senden
    	char *msg = "Beej was here!";
        	int len, bytes_sent;
    
            sockfd = socket(PF_INET, SOCK_STREAM, 0);
            my_addr.sin_family = AF_INET;     
            my_addr.sin_port = htons(MYPORT); 
            my_addr.sin_addr.s_addr = inet_addr("132.241.5.10");
            bzero(&(my_addr.sin_zero), 8);    
    
             connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr));
    
       	len = strlen(msg);
    
    	fprintf(stderr,"Nummer socket %d \n", sockfd);
    
    	bytes_sent=send(sockfd, msg, len, 0);
    
    	fprintf(stderr,"Gesendete Bytes: %d\n\n", bytes_sent);
    
    	return 0;
    }
    

    Weiß wer warum?



  • Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Nabend,

    du hast 0 Fehlerueberpruefung drin. Warum machst du keine Fehlerueberpruefung?

    Dein connect wird schonmal fehlschlagen, weil dest_addr in keinster Weise
    initialisiert ist bzw. wenn du viel Glueck hast, ergibt die Bitrepraesentation
    sogar irgend einen Sinn. Selbstverstaendlich wird send dann entweder Fehl-
    schlagen, wenn connect schon fehl schlug, oder es wird u. U. nichts verschicken
    koennen. Dann bleibt dein Programm bei send stehen, weil du blockierende
    Sockets verwendest.

    gruss
    v R


Anmelden zum Antworten