如何Ping
出自VFP Wiki
(修訂版本間差異)
小 (revert) |
小 (revert) |
(1個中途的修訂版本沒有顯示) |
在2005年4月21日 (四) 10:49的最新修訂版本
出處:http://fox.hanyu.com.tw/View.aspx?fbId=1&Id=85
LPARAMETERS tcWhere, tnWhichPort LOCAL lReturnValue * by josh@jassing.com * with LOTS of help from (actually; all the hard work by) Markus Voellmy * wrapped up as a big function by Lou Harris * * ? pingstate( pingx( "www.jassing.com",80 ) ) * would check jassing.com to be sure it's running a web server * NOTE: it does not do any dns lookups; so if you're checking for a mail server, you need * to resolve the mx record yourself. IF VARTYPE(tnWhichPort) # "N" tnWhichPort = 80 ENDIF *? pingstate( pingx( "www.jassing.com",80 ) ) lReturnValue = pingstate( pingx( m.tcWhere, m.tnWhichPort ) ) RETURN m.lReturnValue #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 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 pingx LPARAM tcServer, tnPort LOCAL lnState, loPing, lnLast loPing=CREA("mswinsock.winsock") WITH loPing .remoteport=tnPort .remotehost = tcserver .CONNECT() lnLast = -1 DO WHILE .state < sckConnected IF lnLast # .state lnLast = .state ENDIF ENDDO lnState = .state .CLOSE() ENDWITH RETURN lnState ENDFUNC