2011-09-27 201 views
0
Private Sub Form_Load() 
    Winsock1.RemotePort = 22222 
    Winsock1.Protocol = sckUDPProtocol 
End Sub 

Private Sub Command1_Click() 
    Command1.Enabled = False 

    Dim sendBuff As String 

    sendBuff = "XXXXX" 

    Label1: 

    On Error GoTo Label2 
    Winsock1.RemoteHost = "andon-eds-1" 
    Winsock1.SendData sendBuff 

    Label2: 

    Winsock1.Close 
    Winsock1.Protocol = sckUDPProtocol 
    Winsock1.RemotePort = 22222 
    Winsock1.LocalPort = 0 

Label3: 

    On Error GoTo EndOfSub 
    Winsock1.RemoteHost = "andon-eds-1" 
    Winsock1.SendData sendBuff 


EndOfSub: 
Command1.Enabled = True 
End Sub 

Private Sub Command2_Click() 
Command2.Enabled = False 

On Error GoTo EndOfSub 
    Winsock1.RemoteHost = "andon-eds-1" 
    Winsock1.SendData "XXXXX" 
EndOfSub: 

Command2.Enabled = True 
End Sub 

Private Sub Command3_Click() 
On Error Resume Next 
    Command3.Enabled = False 

    Dim sendBuff As String 

    sendBuff = "XXXXX" 

    PrintWinsockProperty 

    Winsock1.RemoteHost = "andon-eds-1" 
    Winsock1.SendData sendBuff 

    PrintWinsockProperty 

    Winsock1.Close 
    Winsock1.Protocol = sckUDPProtocol 
    Winsock1.RemotePort = 22222 
    Winsock1.LocalPort = 0  

    PrintWinsockProperty 

    Winsock1.RemoteHost = "andon-eds-1" 
    Winsock1.SendData sendBuff 

    PrintWinsockProperty 

    Command3.Enabled = True 
End Sub 

「主機名‘安燈-EDS-1’不在線,我想我的應用程序可以繼續VB6 Winsock錯誤無效的參數10014

  1. 當我單擊Command我發現了一個錯誤無效的參數: 10014
    在>> Winsock1.SendData sendBuff < <下面LABEL3我的應用程序無法繼續
  2. 當我點擊命令2的2倍它可以繼續,而不應用緊密
  3. 當我點擊Command3它可以繼續沒有應用程序關閉
    我的問題是什麼1.)和2)之間的區別?和
    On Error Resume Next和On Error GoTo之間有什麼區別,對我的問題?

    (**我很擔心我的英語技能,不好意思)
    感謝

    Private Sub Command6_Click() 
    
        Dim i As Integer 
    
        Command6.Enabled = False 
    
        On Error GoTo BeginLoop 
        Winsock1.RemoteHost = "Andon-eds-1" 
        Winsock1.SendData "XXXXX" 
    
    BeginLoop: 
    
        Resume Next 
        For i = 0 To 2 
         Winsock1.RemoteHost = "Andon-eds-" & i 
         Winsock1.SendData "XXXXX" 
    
         Debug.Print Err.Number '0 '0 '0 
        Next 
    
        On Error GoTo TestLabel 
         i = 100/0 
    
        Command6.Enabled = True 
        Exit Sub 
    
    TestLabel: 
    
    End Sub 
    
+0

嘗試向我們展示了發生在該行的錯誤。 – Deanna

+0

Command1_Click中的「Winsock1.SendData sendBuff」在Label3下面 –

+0

您可以嘗試更詳細地解釋您正在使用您提供的代碼執行的操作嗎? –

回答

0

我不知道你正在嘗試用代碼來執行,所以我不能回答您的整個問題,但我可以回答你的問題的這一部分:

On Error Resume Next和On Error GoTo之間有什麼區別。

如果發生錯誤,繼續下一步將導致執行繼續執行下一行代碼。對於On Error GoTo,這會將代碼帶到On Error GoTo之後的代碼部分中的GoTo之後指定的標籤。

0

Error 10014 (WSAEFAULT) is Bad Address

的系統,試圖使用一個呼叫的一個指針參數檢測到無效的指針地址。如果應用程序傳遞無效的指針值,或者緩衝區的長度太小,則會發生此錯誤。例如,如果作爲sockaddr結構的參數的長度小於(sockaddr)的大小。

檢查機器"andon-eds-1"可以ping OK

+0

它離線,但我想我的應用程序可以繼續 –

+0

在這種情況下,您只需要以任何你喜歡的方式來處理錯誤 - 看看[這個鏈接](http://www.vb6.us/tutorials/error處理)讓你開始 –