#DEFINE sckclosed 0 #DEFINE sckopen 1 #DEFINE scklistening 2 #DEFINE sckconnectionpending 3 #DEFINE sckresolvinghost 4 #DEFINE sckhostresolved 5 #DEFINE sckconnecting 6 #DEFINE sckconnected 7 #DEFINE sckclosing 8 #DEFINE sckerror 9 ON SHUTDOWN quit FUNC pingstate LPARAM tnstate LOCAL lcstate DO CASE CASE tnstate = sckclosed lcstate = "Closed" CASE tnstate = sckopen lcstate = "Open" CASE tnstate = scklistening lcstate = "Listening" CASE tnstate = sckconnectionpending lcstate = "Waiting" CASE tnstate = sckresolvinghost lcstate = "Resolving" CASE tnstate = sckconnecting lcstate = "Connecting" CASE tnstate = sckconnected lcstate = "Connected" CASE tnstate = sckclosing lcstate = "Closing" CASE tnstate = sckerror lcstate = "Error" OTHERWISE lcstate = "Unknown" ENDCASE RETURN lcstate FUNC pingy LPARAM tcserver, tnport LOCAL lnstate, loping, lnlast loping=CREA("WinSock") loping.NEWOBJECT("olesock","ws1") DEBUGOUT("Pingx inited") WITH loping.olesock .remoteport=tnport .remotehost = tcserver .CONNECT() lnlast = -1 DO WHILE .state < sckconnected IF lnlast # .state lnlast = .state ENDIF ENDDO lnstate = .state .CLOSE() ENDWITH RETURN lnstate#9 ENDFUNC DEFINE CLASS winsock AS FORM ENDDEFINE DEFINE CLASS ws1 AS OLECONTROL OLECLASS = "MSWinsock.winsock" ENDDEFINE>>Josh,