VB6 Winsock Ошибка Неверный аргумент 10014 - PullRequest
0 голосов
/ 27 сентября 2011
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

'имя хоста "andon-eds-1" не в сети, и я хочу, чтобы моя заявка продолжалась

  1. когда я нажимаю Command1, я обнаружил ошибку: неверный аргумент: 10014
    at >> Winsock1.SendData sendBuff << ниже Label3, мое приложение не может продолжить <br />
  2. когда я нажимаю Command2 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
    

Ответы [ 2 ]

0 голосов
/ 29 сентября 2011

Ошибка 10014 (WSAEFAULT) - неверный адрес

Система обнаружила неверный адрес указателя при попытке использовать аргумент указателя вызова. Эта ошибка возникает, если приложение передает недопустимое значение указателя или длина буфера слишком мала. Например, если длина аргумента, который является структурой sockaddr, меньше, чем sizeof (sockaddr).

Проверьте, что машина "andon-eds-1" может быть проверена нормально

0 голосов
/ 29 сентября 2011

Я не уверен, что вы пытаетесь сделать с кодом, поэтому я не могу ответить на весь ваш вопрос, но я могу ответить на эту часть вашего вопроса:

В чем разница междуОшибка Возобновить Далее и Вкл Ошибка Ошибка.

Возобновление затем приведет к выполнению перехода к следующей строке кода, если произойдет ошибка.Для On Error GoTo, это приведет ваш код к метке, указанной после GoTo в разделе кода, который следует за On Error GoTo.

...