Seite 1 von 1

Status des Sockets ermitteln

Verfasst: 18.02.2006 03:08
von MVXA
Hallo!
Wie kann man eigentlich den Status eines Sockets ermitteln? Ganze
sollte unter Windows arbeiten, optional wäre auch Linux nicht schlecht.
Mit Status meine ich wie verbunden, am verbinden, getrennt, Server.

Hab die MSDN schon durchsucht aber leider nichts gefunden oder ich
habe die richtige Funktion leider einfach nur übersehen. Wäre dankbar
für jede kleine Hilfe.

Verfasst: 25.02.2006 18:10
von uweb
Das entspricht zwar nicht ganz der Frage, löst aber hoffentlich die Aufgabe :

Code: Alles auswählen

; Autor: freak
; Datum: ?
; Forum: ?

;leicht modifiziertes Beispiel aus dem CodeArchiv

; ++++++++++++++++++++++++  Network Client Example +++++++++++++++++++++++++++++++

OpenWindow(0, 0, 0, 300, 400, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Network Client")
CreateGadgetList(WindowID())
ListViewGadget(1, 5, 5, 290, 390)

If InitNetwork()=0: End: EndIf                       ; Initialize Network Stuff
ConnID.l = OpenNetworkConnection("127.0.0.1",6000)
If ConnID = 0: End: EndIf

; The following call will activate this Trick
;
; ConnID      : connection ID (from OpenNetworkConnection)
; WindowID()  : ID of a Window, to send the Events to.
; #WM_NULL    : The Message to be Send, if a Network Event occurs.
;               #WM_NULL will be ignored, but still causes the WaitWindowEvent() to return,
;               and then the NetworkEvent to be called.
; #FD_ALL     : Event to be send to Callback Procedure, we request them all.

#FD_ALL = #FD_READ|#FD_WRITE|#FD_OOB|#FD_ACCEPT|#FD_CONNECT|#FD_CLOSE
WSAAsyncSelect_(ConnID, WindowID(), #WM_NULL, #FD_ALL) 


; Main Loop
Status.s = "warten ..."
AddGadgetItem(1,-1,Status)  
Repeat
  If Status <> "warten ..."
    Status.s = "warten ..."
    AddGadgetItem(1,-1,Status)  
  EndIf
  If WaitWindowEvent() = #PB_EventCloseWindow
    End
  EndIf
  If NetworkClientEvent(ConnID) = 2
    Status = "Roh-Daten wurden empfangen und werden verarbeitet."
    AddGadgetItem(1,-1,Status)  
    Text.s = Space(500)
    ReceiveNetworkData(ConnID, @Text, 500)
    AddGadgetItem(1,-1,Text)  
    Status = "Antwort wurde empfangen und verarbeitet"
    AddGadgetItem(1,-1,Status)  
  ElseIf NetworkClientEvent(ConnID) = 3
    Status = "Eine Datei wurde empfangen und wird verarbeitet."
    AddGadgetItem(1,-1,Status)  
    ; Pustekuchen
    Status = "Antwort wurde empfangen und verarbeitet."
    AddGadgetItem(1,-1,Status)  
  EndIf
ForEver



; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
P.S. Ich schätze in der MSDN findet man wenig OS-neutralen Code.

Verfasst: 01.03.2006 00:47
von MVXA
Eigentlich wollte ich das nicht unbedingt mit Variablen
machen. Wird wohl kein Weg drum herum führen :(...

Ich danke dir trotzdem für deine Hilfe :allright: