[prev in list] [next in list] [prev in thread] [next in thread] 

List:       suse-programming
Subject:    Re: Socket-Programmierung (fast =?iso-8859-1?q?Anf=E4nger?=)
From:       Holger Macht <holger.macht () web ! de>
Date:       2003-02-10 18:24:04
[Download RAW message or body]

> > 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".
>
Warum brache ich strukt sockaddr? Geht auch ohne! Wenn ich es brauche, 
muss ich es dann auch bei accept(),usw benutzen?

> > 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) ...
>
Vollkommen richtig. Habe 1000 mal mit dem TUtorial verglichen und den 
Fehler nicht gesehen.

> > 		perror("accept()");
> > 	 	else;
> > 		cout <<"CONNECTION!"<<endl;
>
> 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 << ...;
>
Auch richtig *g*!

> > char *msg="Ich habs geschafft!!";
> > int len=strlen (msg);
> > cout <<len<<endl;
> > nachricht=send(neu_socket,msg,len,0);
>
> 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);
>    ....

Habe es halt gemäß dem Tutorial gemacht.

> P.S: du machst viele C-Anfaenger Fehler.  Vielleicht solltest du
> nochmal irgendein Buch lesen, was an die Sprache heranfuehrt.

Hab schon zwei gelesen.  Doch dann habe ich wieder weiter Pascal 
programmiert und das verwirrt mich immer. Inzweichen kann ich's 
nämlich nicht mal mehr mit Pascal *g*
Aus jeden fall funktioniert es jetzt. Wenn ich vielleicht noch einen 
kleinen TIpp abstauben dürfte, damit ich weiss wo ich weiter zu 
machen habe:
Ich brauche ein par Stichworte, wie ich jetzt einen Befehl über die 
Scckets schicken kann, und die dann auf dem Zielrechner ausgeführt 
werden.

Danke
Holger


-- 
Holger Macht - 91247 Vorra-Artelshofen
mailto:holger.macht@web.de - http://www.sgt-hulder.de
Homepage: Tabulaturarchiv, Vokabelprogramm, Tools

-- 
Um die Liste abzubestellen, schicken Sie eine Mail an:
    suse-programming-unsubscribe@suse.com
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-programming-help@suse.com

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic