2011年5月7日 星期六

[VFP] 檢查port有沒有通

瀏覽數
程式碼如下:
?CHK_PORT([127.0.0.1],80)

*********************
FUNCTION CHK_PORT
*********************
PARAMETERS P_cIP,P_nPORT
* 功能:測試 PORT 有通否
* 參數P_IP 字元,遠端主機IP
* 參數P_PORT 數字,PORT NUMBER
PRIVATE P_FLG,I,LNLAST
*!* #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
P_FLG=.F.
IF TYPE('GETOBJECT("","MSWINSOCK.WINSOCK")') <> "O"
RETURN .T. &&1000609C
ENDIF
OWINSOCK = CREATEOBJECT("MSWINSOCK.WINSOCK")
IF TYPE("OWINSOCK") # "O"
MESSAGEBOX("WINSOCK初始化失敗",16,"系統訊息")
RETURN .F.
ENDIF
WITH OWINSOCK
.REMOTEHOST = P_cIP
.REMOTEPORT= P_nPORT
.CONNECT()
I=0
LNLAST=-1
DO WHILE .T.
I=I+1
IF LNLAST <> .STATE
LNLAST = .STATE
ELSE
*INKEY(.1) && Delay 1/10 second
*WAIT "" TIMEOUT .2 &&20120720C
INKEY(0.2) &&20150415-11:16chilin
ENDIF
IF LNLAST>=7 OR I>10
IF LNLAST=7
P_FLG=.T.
ENDIF
EXIT
ENDIF
ENDDO
.CLOSE()
ENDWITH
RELEASE OWINSOCK
RETURN P_FLG
ENDFUNC

沒有留言: