Status des Sockets ermitteln

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Status des Sockets ermitteln

Beitrag 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.
Bild
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag 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.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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:
Bild
Antworten