Pointer Problem / gethostbyname / Winsock
-
Du hast ein grundsätzliches C-Verständnisproblem. Eine Struktur ist ein Typ wie int und andere auch... auf Typen kann man Zeiger setzen... nun überdenk deinen Code nochmal. Die Struktur die du erstellt hast, ist allerdings nutzlos, da sie ja bereits definiert wurde.
-junix
-
struct cominfo{ char name[20]; char alias[20]; short a_typ; short a_len; char s_IP[16]; }; // irgendow im Programm cominfo* ainfo=new cominfo; ainfo->Name="jklj"; ainfo->atyp=2; //...
-
:p
war schneller
-
Was zum Teufel habt ihr nur mit euren selbst erstellten structs?
Aus der WinSock 2-Hilfe:gethostbyname returns a pointer to a hostent structure. The contents of this structure correspond to the hostname name.
Also brauchts doch nur einen Zeiger vom Typ hostent?
-junix
-
joh,
oder so halt eben.
-
yo, thanx,
aber den zeiger auf hostent wollte ich nicht benutzen, weil in der hilfe auch steht, das man von den daten eine Kopie anfertigen soll, und sie dann erst benutzen soll.
-
The contents of this structure correspond to the hostname name.<<<
den satz verstehe ich nicht... wie kann man zu einem namen korrespondieren ? warum zweimal name hintereinander, hätte nicht einmal hostname gereicht ?
-
AUSSERDEM junix....
wenn ich einen zeiger vom typ hostent erstelle, also so:
hostent * info;
und dann :
info = gethostbyname();
mache, wohin gehen die daten denn dann die returned werden ? die müßten doch dann eigentlich dahin gehen, wo hin der Zeiger zeigt - aber der Zeigt ja auf das, wo es her kommt... das wäre dann ja ein loop. Ohne das ich an die daten rankomme.
Ich schreibe das nur, damit du mal merkst wieviel Fragen man sich zu sowas stellen kann. ...bevor man sich das richtige denkt...
-
...und andreas... new kann ich nicht benutzen, da ich in c und nicht c++ programmiere.
-
Gut, dann stellt sich allerdings die Frage was du im C++ Builder-Forum machst. new unter C = malloc() um die Struktur zu kopieren verwendet man memcpy() und ich würde dir echt empfehlen ein C-Tutorial zu lesen.
-junix
-
ich dachte in diesem forum geht es hauptsächlich um das Borland in dem titel... da der Borland C++ Compiler ja auch c kann, dachte ich, das wäre hier eigentlich ganz richtig, naja.
tutorials hab ich schon viele gelesen, naja, das mit memcpy und so hab ich noch ausgelassen. wüßte nicht was ich mit nem tutorial soll..... dann besser etwas das sich ausführlich mit einem Thema beschäftigt. Grundlagen sind mir bewußt. jedenfalls denke ich das ob ich richtig denke, zeigt sich dann ja erst wenn ichs auch anwende...
-
Fragen zum Freeware Compiler, "Borland C++" etc. bitte nach Andere Compiler.
kommt dir diese Zeile bekannt vor? (Steht irgendwo oben in der Threadübersicht dieses Forums)
Grundlagen sind mir bewußt. jedenfalls denke ich das
Falsch gedacht... Bestimmt sind dir die Grundlagen nicht bewusst, wenn du einen int-Zeiger als Zeiger auf eine Struktur benutzen willst und dann noch was von "genügend Platz" erzählst...
ob ich richtig denke, zeigt sich dann ja erst wenn ichs auch anwende...
Es hat sich gezeigt, du hast falsch gedacht, also zurück auf Start (-;
Ich denke ich schieb dich mal nach Andere Compiler...
-junix
[ Dieser Beitrag wurde am 03.12.2002 um 08:22 Uhr von junix editiert. ]
-
...ähm, ich benutze aber nicht den Freeware Compiler von Borland.
und zu den zeigern - ein Zeiger ist doch eine Speicheradresse einer Variablen.
Und warum sollte die Speicheradresse einer Struktur nicht in einen Integer Wert passen ? Ich meine es giebt doch nur 65000 Tausen (oder so...) Speicheradressen, oder hab ich da jetzt was Falsch verstanden. ? und für die Zahl 65000 reicht eine int Variable meines Wissen sehr wohl aus. Und die Speicheradresse für eine Struktur, ist doch genau die selbe Speicheradresse wie für einen Char. nur das innerhalb dieses Speicherbereichs der Struktur, mehrere Segmente belegt sind, als das bei char der fall ist.Wenn ich was Falsch verstanden habe, erklärs mir doch bitte einer, oder gebe mir einen Tip wo es dazu GUTES lesematerial giebt. (online)
Meine Bisherigen Gedankengänge zu Speicheradressen und Segmenten stammen aus einem Assemblerbuch. Da wurde das so in der Art erklärt.