winsock programmierung
-
wie mach ich das, dass sich das programm nicht gleich beendet, sondern halt auf dem port listened, bis ichs beende?
muss ich dazu son message-loop einbauen?grüsse freelancer
-
quick & dirty?
for(;;) { // Hier Dein Code... }
-
naja ich hab einfach mal ne leere winmain mit einfach
while(1)
drin laufen lassen->hat ne relativ hohe prozessornutzung...
-
Sobald Du mit accept() auf Connections wartest wird sich die CPU-Nutzung gegen 0% einpegeln...
-
hm ok das könnte funktionieren

aber irgendwie ist socklen_t nicht definiert... in winsock.h hab ich auch keinen typ gefunden der dem entsprechen könnte... woran liegts?bye
freelancer
-
Wo brauchst Du "socklen_t" ? - Nie gehört...
-
Der lezte parameter von accept() afaik
-
Also in der Platform SDK ist accept() folgendermaßen definiert:
accept(SOCKET s, sockaddr *addr, int *addrlen);Ich seh da nichts von socklen_t.
-
MarcusN schrieb:
Also in der Platform SDK ist accept() folgendermaßen definiert:
accept(SOCKET s, sockaddr *addr, int *addrlen);Ich seh da nichts von socklen_t.
unter linux:
int accept(int s, sockaddr *addr, socklen_t *addrlen);unter windows funzt auch "int" statt "SOCKET".
mfg
-
hallo,
hab den parameter jetzt überint addrlen=sizeof(len);als pointer auf den integer übergeben. besser geht wohl nicht, oder?

und zu accept: ich hab das jetzt in ner while-schleife drin, und wenn accept!=1 zurückgibt, dann schreibt er mir das in ne datei. also hab ich noch n kleinen "client" gebaut, connect() auf 127.0.0.1 macht. nur schreibt der plöde "server" nix in die datei, also scheinbar kommt nix an

grüsse freelancer
-
Falls immer noch was nicht klappen sollte etc., schau dir mal das Client - Server Chat Beispiel an auf meiner Webseite...
Kann ja nicht schaden
Gruß,
Chris
-
upsa ich depp... dumm wenn man sich die falsche output-datei anguggt

bye freelancer
-
ne frage noch: ich würde gerne einen string verwenden, um die empfangenen daten zu speichern. allerdings ist string nicht deklariert, wenn ich string.h einbinde...
byse freelancer
-
Meinst Du nicht #include <string>? oder using namespace std;? Es geht auch mit einem normalen char... hast Du dir denn das Beispiel auf meiner Seite nicht angesehen? Da werden doch eingkommende Daten zunächst in einen String gehauen...
-
dochdoch habs schon... hatte den namespace vergessen :>
bye freelancer
-
Ich hoffe du hast das include <fstream.h> auch rausgeschmissen? Es heißt nämlich <fstream> ohne .h am Ende.
Ein <fstream.h> gab es nie. Auf manchen Compilern verursacht dieser Code daher Fehler.
-
ja, damit gibs keine probleme mehr... ich hab nochmal ne frage zu den sockets:
krieg ich irgendwie mit, wenn der andere den socket schliesst?
und bei server:
wenn ich eine anfrage mit accept angenommen hab, dann warte ich am besten in einer schleife auf daten auf diesem socket, oder? (ich will bis jetzt nur mit einem client kommunizieren)
praktisch so:accept(...); while(1) { recv(...); } closesocket(...);nur fehlt da wie gesagt, was der server macht, wenn der client bei sich den socket schliesst...
bye freelancer
-
Ehm freelancer find ich jetzt ein wenig blöde... Ich hab' doch geschrieben dass es auf meiner Page (siehe unten) ein Chat Beispiel gibt! Da hast Du Server, Client und eine Schleife die Daten die ankommen in einen String packt und die Schleife erkennt gleich, wenn der andere den Chat schließt. Wieso ignorierst Du?
Gruß,
Chris
-
sorry hab erst gepostet und dann gedacht

-
No problem... auf jeden Fall siehste da wies geht. Ich probier gerade mal eine Adresse zu einer IP zu Resolven und dann wieder zurück zu ReResolven. :>
Gehts nun @ freelancer