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