Fragen zu WinSocks



  • Hi,

    ich arbeite mich grade in die WinSocks ein.

    Erstmal ne Frage: Wofür ist die Funktion "bind"?

    Noch ein paar fragen:

    Wenn ich zb einen Server schreibe dann muss ich doch nur einen Socket erstellen und diesen in de listen Modus versetzen.
    Mit accept akzepitiere ich dann eine Verbindung von einem Client. Aber woher weiss ich, ob ein Client sich verbinden will?

    Das wars erstmal.

    mfg,

    Faule Socke



  • Hallo,

    mit man: bind initialisierst du ein Socketobjekt für ein gewisses Interface/IP und einen Port.

    Bsp: Dein Rechner hat die IP 127.0.0.1 und 192.168.0.1 (Lan IP). Du moechtest einen Socket erstellen, der nur fuer dich lokal funktioniert. Dann uebergibst du bind() die IP 127.0.0.1 und den gewuenschten Port.
    Danach kannst du listen aufrufen.

    Der Aufruf von man: accept ist blockierend. Das heißt, die Funktion kehrt erst von ihrem Aufruf zurück, wenn eine Verbindung zustande kam. Die Verbindung wird von den WinSockets, also vom Betriebssystem geregelt, da musst du dich nicht drum kümmern. Um mehrere Verbindungen in einem Server anzunehmen, bietet es sich an, den Aufruf von accept in eine Schleife zu stecken.



  • http://beej.us/guide/bgnet/
    Beej's Guide to Network Programming

    http://www.zotteljedi.de/doc/socket-tipps/
    Zotteljedis Tipps zur Socket-Programmierung



  • Aber wenn die Funktion doch blokiert, kann ich doch so lange ncihts anderes machen. gibt es nicht eine alternative die nicht blockiert?

    EDIT
    Das Buch von zotteljedis page habe ich schon. damit hab ich mich eingearbeitet. Aber ich finde das Buch nciht so gut. Es gibt kaum beispielcode und ist auch sehr gwöhnungsbedürftig, gerade deshalb, weil es nicht ausschlieslich auf Windows ausgelegt ist.

    Socke



  • wenn du sockets auf nonblocking schaltest, brauchst du select oder poll oder sonstiges, denn ein recv() == 0 kann dann mehreres bedeuten.



  • Was sind select und poll und wie schlate ich die Sockets auf "nonblocking"?

    Socke



  • was ist google?
    was sind die links, die ich gepostet habe?


Anmelden zum Antworten