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.
Status des Sockets ermitteln
Das entspricht zwar nicht ganz der Frage, löst aber hoffentlich die Aufgabe :
P.S. Ich schätze in der MSDN findet man wenig OS-neutralen Code.
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
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++