台灣最大程式設計社群網站
∣
免費加入會員
∣登入
∣回首頁∣
您好
線上人數
1432
會員總數:
246274
討論主題:
189809
討論區
程式下載/上傳
科技新聞
專欄文章
會員中心
加值服務
外包接案
求職求才
登入
登出
歡迎您
免費
加入會員
討論區選單
新手必讀
我要提問!!
討論區
個人討論區
我的關注主題
我的黑名單
討論區EP英雄榜
專家等級說明
討論區常見問題
兌換發問點數QP
扣點申請加值服務
申請版主
開發工具
ASP
ASP.NET
C#
VB.NET
VB6
C/C++
PHP
Java
Java Script/ Node.js
AJAX / JSON / jQuery
其他語言
行動裝置開發
Android APP 開發
iOS APP/ swift 開發
Windows Phone APP
資料庫
ACCESS
MS SQL
MySQL
Oracle
其他DB
多媒體 / 網管
CSS/HTML5/Bootstarp
影像處理
office VBA / WinOS
Windows 伺服器
Linux / Unix
網管 / 資安 / VM
硬體 / 週邊 / 其他
綜合
求職求才
外包接案
心情甘苦談
網站經營 / 合夥 / 證照
建言 / 公告
文章區
專欄文章
科技新聞
Blog精華文章
討論區列表
>>
VB6
>> 連續按按鍵呼叫程式的問題
[]
[
我要回覆
]
連續按按鍵呼叫程式的問題
價值 : 50 QP
點閱數:992 回應數:0
樓主
無情子
52
51
814
28
發送站內信
使用WINSOCK
我點按鈕時會去呼叫 sending程式 待server回覆或Timeout時 將結果傳回
我是希望在執行第一次時如果還沒有接收到SOCK的回覆時 不要送出第二次
但不知為什麼 點兩次按鈕(中間隔五秒) 他還是直接送給SOCK Server而不是
等第一次結束後才接著送出去 而且sending的結果是錯誤的
我想程式一定有問題 只是找不到 〉:〈
程式如下
Private ackMsg As String Private Sub CWINSockTimer_Timer() CWinsock.Close B_Sending = False CWINSockTimer.Enabled = False ackMsg = "[Err]:TimeOut~" End Sub Private Sub Form_Load() B_Sending = False CWINSockTimer.Enabled = False End Sub Private Sub Form_Unload(Cancel As Integer) CWinsock.Close End Sub Private Sub CWinsock_Connect() If CWinsock.State = sckConnected Then CWinsock.SendData sendStr Else ackMsg = CWinsock.State End If End Sub Public Function sending(ByVal sockHost As String, ByVal sockPort As Integer, ByVal tempStr As String, ByVal t_time As Integer) As String On Error GoTo Oops Dim RegTime As Variant RegTime = Now Do Until B_Sending = False Sleep 1 DoEvents If DateDiff("s", Now, RegTime) > t_time Then sending = "[Err]:TimeOut" Exit Function End If Loop If B_Sending = False Then B_Sending = True CWINSockTimer.Enabled = True CWINSockTimer.Interval = CLng(t_time) * 1000 sendStr = tempStr CWinsock.RemoteHost = sockHost CWinsock.RemotePort = sockPort CWinsock.Close ackMsg = "" CWinsock.Connect Do Until ackMsg <> "" Sleep 1 DoEvents If DateDiff("s", Now, RegTime) > t_time Then ackMsg = "[Err]:TimeOut" Loop sending = ackMsg CWinsock.Close CWINSockTimer.Enabled = False B_Sending = False End If Exit Function Oops: sending = "[Err]:" & Err.Description CWinsock.Close CWINSockTimer.Enabled = False B_Sending = False End Function Private Sub CWinsock_DataArrival(ByVal bytesTotal As Long) On Error GoTo Oops Dim temp As String temp = String(bytesTotal, Chr$(0)) CWinsock.GetData temp, vbString, bytesTotal ackMsg = temp Exit Sub Oops: ackMsg = "[Err]:" & Err.Description CWinsock.Close CWINSockTimer.Enabled = False B_Sending = False End Sub Private Sub CWinsock_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) ackMsg = "[Err]:" & Description & "Code:" & CStr(Number) CWinsock.Close CWINSockTimer.Enabled = False B_Sending = False End Sub
本篇文章發表於2015-06-01 00:47
目前尚無任何回覆
回覆
如要回應,請先
登入
.
|
網站導覽
|
網站介紹
|
4P點數說明
|
電子報
|
小舖活動
|
大事紀
|
廣告刊登
|
常見問題
|
聯絡我們
|
版權所有 ©copyright 2000 All Rights Reserved