filetime

na du hast ein objekt vom typ einer struktur...

WIN32_FIND_DATA sData;

soweit sollte es noch kein problem darstellen... nun machst du was auch immer du damit tun wilst, daten rein schreiben oder ähnliches...

nun musst du nur her gehen und die daten der struktur an den socket schicken...

dazu hast du logischerweise nen socket...
WSAStartup(..)
SOCKET hSock = socket(......);
connect(hSock....);

soweit sollte es auch noch klar sein....

und nun schick ich einfach die daten die in der struktur gespeichert sind, durch den socket...

send(hSock, &sData, sizeof(sData), 0);

ich übergebe ihm also einen pointer auf die struktur (wird nach void* gecastet vom compiler) und die größe der struktur, damit sendet er die ganze struktur auf einmal über die socket verbindung raus...

auf der empfangsseite is es im prinzip genauso nur das du das send gegen ein recv ersetzt, dann hast du nach dem recv die struktur auch auf der client seite...
WIN32_FIND_DATA sData;
recv(hSock, &sData, sizeof(sData), 0);

wieder der pointer auf die struktur, und die größe der struktur...

das einzige was dann zu beachten is, is, das die seite die die daten empfangen soll, keine pointer die in der struktur gespeichert sind benutzen darf

also wenn du nun eine struktur hast die so aussieht:

struct ProgData {
int ID;
char username[30];
char** params;
};

so darfst du ProgData.params nicht benutzen, sonst kommts zum absturz.. weil die pointer auf der client seite natürlich nicht mehr gültig sind, du musst also alle daten in der struktur speichern und auf pointer verzichen...
 
sry :-( du musst mit mir was das angeht so reden wie mit einem der seit ca einem monat netzwerkanwendungen macht

wenn ich dich richtig verstanden habe
Code:
	recv(s,&wData,sizeof(wData),0);
meinste es so dass ich ganz einfach per send auch strukturen senden kann nur dann bekomm ich nen fehler dass ich nur strings senden kann ..aus deiner erklärung ist es für mich unersichtlich was ich mit der struktur mach ..aus allen antworten seh ich im quellcode nur dass man strukturen ganz normal mit send senden kann ...ich weis aber nicht was ich dann falsch mach ;((((
 
ich hab leider keine ahnung wie ich das versenden kann ansich wird folgender code akzeptiert:

WIN32_FIND_DATA fData;

send(s,(char *)&fData,sizeof(fData),0);

bzw
recv(connectedSocket,(char *)&wData,sizeof(wData),0);

er sendet alles auf der anderen seite empfange ich es und gebe es in die listbox aus ..aber es is nur leer..es steht zwar was eingetragen und es dürfte auch die richtige anzahl an dateien sein aber es steht nur leer ..is das falsch ..alles andere was ich getestet habe funktioniert nicht ..zumindest so wie ich deine anleitung verstanden hab ;(
 
du kannst doch ein WIN32_FIND_DATA nich in einem listbox anzeigen, sag mal.... also echt...

weißt du was der erste member in der struktur is? na? immer noch ein DWORD... und weißt du was ein DWORD normalerweise enthällt wenn es nur ganz kleine zahlen speichern muss? na? irgendwo doch sicher ein \0..damit hast du das ende der zeichenkette erreicht bevor du überhaupt irgendwas sichtbaren in die listbox geschrieben hast... nein aber das was du am empfang raus bekommst is ja wieder ein WIN32_FIND_DATA und auf die einzelnen elemente der struktur kannst du dann ganz normal zugreifen..

also nach deinem recive...
WIN32_FIND_DATA wData;
recv(connectedSocket,(char *)&wData,sizeof(wData),0);

kannst du ganz normal mit dem wData objekt arbeiten...
MessageBox(NULL, wData.cFileName, "Dateiname", MB_OK);
z.B.
 
jetzt hab ichs auch schon nur hast du ned hingrschriebn (char *)&wData sondern nur wData ..deswegen hab ich mich gewundert ..mir war klar dass du nur char senden kannst aber du hast das halt gschrieben ghabt und deswegen hab ich mich gewundert was du meinst :) interrressant find ich jetzt wo ichs hab nur dass die 2 dateien . und .. --es reagiert auf auch gleich auf diese "dateien"
also es funktioniert auch schon übergeordneter ordner wechseln ;).
nachdem ich ne funktion mit ner listbox gemacht hab in der ich die ordner anzeig und dann wenn ich auf einen doppelklick und eben ins unterverzeichniss reingeh funzzt das gleich dass ich aufs . geh und geht in den überordner ...hat mich gewundert ..hätte mir gedacht da muss ich extra was machen ..leider gehts nur bis zur 2ten unterebene ..dann zeigts ma ne leere listbox an ...darum muss i mi no kümmern
 
jep . und .. sind nett... die sind nur im virutellen dateisystem da aber immerhin...

. = aktuelles verzeichnis
.. = übergeordnetes verzeichnis

. wird eigendlich nur in der unix welt wirklich benutz, wenn man dort z.B. ne datei ausführen will muss man es nämlich mit angeben...

aber freut mich für dich wenn es funktioniert
 

Neue Beiträge

Zurück