.| Autor | Beitrag |
|---|---|
|
000 12.04.2007, 20:48 Cpt. Rick |
Ich hab mal meinen alten Server mit 3 Clients ausgegraben und auf n Clients umgeschrieben. Hier die Datei server.c: und die Datei start_svr.h: Der error ist an folgender Stelle in der Datei server.c: Zeile 133: `acceptSocket' undeclared (first use in this function) Dabei wurden beide Sockets zuvor deklariert!? --Dieser Beitrag wurde am 12.04.2007 um 20:48 von Cpt. Rick bearbeitet. |
|
Profil || Suche |
|
001 12.04.2007, 21:38 Bluthund |
Nach Zeile 127 existieren die genannten Variablen nicht mehr. Siehe Gültigkeitsbereich von lokalen Variablen in C. edit: Außerdem gehören in ein Headerfile keine Funktionsdefinitionen... --The C language combines all the power of assembly language with all the ease-of-use of assembly language. Dieser Beitrag wurde am 12.04.2007 um 21:39 von Bluthund bearbeitet. |
|
Profil || Suche |
|
002 12.04.2007, 21:55 Cpt. Rick |
Ich habe zu dem Thema einen interessanten Beitrag gefunden: http://www.user.tu-berlin.de/looprjbb/it/C_Kurs/funktion/Html/lektion_5/lektion_5.html Aber wie sorge ich nun dafür dass die beiden Sockets auch außerhalb dieses Blockes gültig sind? Ich kann sie ja nicht mit der Anzahl der Spieler deklarieren, bevor ich diese kenne (sprich, erst nach der Eingabe von "player") !? -- |
|
Profil || Suche |
|
003 12.04.2007, 22:11 HammerBlade |
Du definierst acceptSocket und connectedSocket nach dem 'int player = 0;' in Zeile 56 als Pointer:
"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon |
|
Profil || Suche |
|
004 12.04.2007, 23:23 Cpt. Rick |
Das ist super! Und wie greife ich nun auf die Sockets zu? Nach wie vor über ein array? -- |
|
Profil || Suche |
|
005 13.04.2007, 01:09 Kriz |
Nein, du solltest einen Socket auch wieder schließen, wenn er nicht mehr gebraucht wird. closesocket() führt eventuell noch wichtige Aufräumarbeiten durch, z.B. free'd die Funktion ebenfalls vorher alloziierten Speicher usw. Erst _danach_ sollte man den Zeiger auf den Socket wieder freigeben. Nein, ein alloziiertes Objekt und ein Array sind zwei Paar Schuhe. Zugriff auf das Objekt erfolg günstigerweise mit dem Dereferenzierungsoperator -> oder meinetwegen auch per *. Kombo. ------ Erm, nimm mir das jetzt nicht übel, aber wie kann man Network-Apps in C schreiben, ohne eine Ahnung von Zeigern, Dereferenzierung usw. zu haben? Das ist mehr als nur fundamental... --K:R-I)Z++ |
|
Profil || Suche |
|
006 13.04.2007, 01:29 Cpt. Rick |
Wir lernen C in der Schule und der Lehrer ist grausam. Wir machen dass jetzt ein Jahr lang unf sind gerade mal dabei angekommen wie man Funktionen erstellt, ohne jemals von pointern oder sonst etwas gesprochen zu haben. Ich habe zwar versucht mich dort einzuabreiten, aber es scheitert hauptsächlich am Zeitmangel. Schonmal vielen Dank für eure Hilfe. Mit diesen Stichworten kann ich wenigstens mal geziehlt suchen ;) -- |
|
Profil || Suche |
|
007 13.04.2007, 01:56 Kriz |
Wtf? Was ist denn das für eine traurige Figur? Nach einem Jahr sollte man sowas aber schon längst abgehandelt haben. Was für ein Spack von Lehrer... -- K:R-I)Z++ |
|
Profil || Suche |

