winsock programmierung



  • hallo,
    hab den parameter jetzt über

    int 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



  • jopp klappt 🙂
    danke!

    grüsse freelancer



  • btw zu dem banner auf deiner page:
    wxwindows heisst jetzt wxwidgets 🙂

    grüsse freelancer



  • Sicher? In wxWidgets kenne ich mich nicht aus. Hast Du ICQ?



  • hi,
    irgendwie gehen mir daten verloren. auf der einen seite schicke ich in einer while-schleife 6 nachrichten, und auf der anderen warte ich mit recv in einer anderen while schleife darauf. und es kommt relativ oft vor, das welche fehlen 😞
    gibts ne lösung dafür?

    grüsse freelancer



  • Hi. Wie gesagt...

    chris (20:07):
    dann sende in größeren zeitabständen... oder schau dich um nach File In File Out ... das ist relativ kompliziert aber ist die einzige möchtlich keit wie man keine daten verliert.

    Entweder, du sendest etwas verzögert, so dass Du die Hoffnung haben kannst, dass alles "zufällig" ankommt 😃 oder Du verwendest den "Herr FiFo" (File In, File Out System). Dabei wird ein String immer wieder mit den ankommenden Socketdaten aufgefüllt, bis auch wirklich "EIN NEUES DATENPAKET" angekommen ist und wird dann ausgewertet. Ist etwas komplizierter aber ich verwende das bei meinen verschiedenen Chatsystemen immer... Da kommt jeder Byte auch 100%ig an. Eventuell schreibe ich dazu mal ein Tutorial, bzw. Quelltext und veröffentliche ihn auf win-api.com, eventuell auch am Wochenende.

    Naja vielleicht hastes bis dahin schon geschafft 😉

    Greez
    Chris


Anmelden zum Antworten