Hi, On Sun, 9 Feb 2003, Holger Macht wrote:
int main() { int my_socket, neu_socket, nachricht; sockaddr_in lokaleadresse,remote_host;
if (bind(my_socket, (sockaddr *)&lokaleadresse, sizeof(sockaddr))
Du willst "struct sockaddr" nicht "sockaddr".
if (neu_socket=accept( my_socket, (sockaddr *) &remote_host, &sin_size)==-1)
Du hast hier (verkuerzt): "if (a=accept (...) == -1)". Dies vergleicht zuerst Rueckgabe von accept() mit -1 und weiss das Ergebnis (0 oder 1) dann 'a' zu. Deine Klammerung ist also wieder mal kaputt, du willst: if ( (neu_socket = accept (....)) == -1) ... der besseren Lesbarkeit wegen empfehle ich aber dringend: neu_socket = accept (....); if (neu_socket == -1) { ... } Das ist auch der Fehler, der das Nichtarbeiten deines Beispieles ausloest.
perror("accept()"); else; cout <<"CONNECTION!"<
Ui. Hast du da wirklich "else;" drinstehen? D.h. dann naemlich, das das "cout << "connection" nicht im else-Zweig steht, sondern als ganz normales toplevel-statement. Du willst: perror ("accept()"); else cout << ...;
char *msg="Ich habs geschafft!!"; int len=strlen (msg); cout <
Man beachte, das du hiermit den ganzen String, allerdings _ohne_ die abschliessende '\0' sendest. Der Empfaenger hat damit keine Moeglichkeit, das Stringende zu erkennen, und wird wohl komische Sachen mit diesem String machen. Du willst: char *msg = ...; int len = 1 + strlen (msg); ....
Ich weiss soweit, dass das irgendwas mit dem "Accept-Socket" zu tun haben muss. Nur in einem Tutorial steht es halt exakt so drin.
Glaub ich nicht. Ciao, Micha. P.S: du machst viele C-Anfaenger Fehler. Vielleicht solltest du nochmal irgendein Buch lesen, was an die Sprache heranfuehrt.