热情软件屋

 

当绑定时,所有的网卡都出故障怎么处理


编号:QA003374
建立日期: 2000年9月28日 最后修改日期:2000年9月28日
所属类别:

njzhang.zyk:
    操作系统:Win2000
    编程工具:VB6.0
    问题:本人在VB中用winsock编程进行前台通讯,并使用多块网卡以便切换。当其中只要有一块网卡可用时,程序能在绑定出错时根据On Error跳到NextFor标志处,但是当所有的网卡都出故障时,用bind绑定最后一块时系统出错,提示“本地机器没有可用的地址”,Winsock错误号为10049;On Error语句不再有效,也不触发Winsock控件的Error事件,不知怎样才能在程序中先于系统捕捉到错误进行处理,而不是出现系统提示的错误信息。望赐教!
     下面是实现绑定的源代码:
     IsOneWorking=False
    
     For i = 0 To UBound(IPAddress)
     Winsock_bc.Protocol = sckUDPProtocol
     Winsock_bc.RemotePort = 4000 Winsock_bc.LocalPort = 4000
     Winsock_bc.RemoteHost = RemoteHost(i)
    
     On Error GoTo NextFor
     Winsock_bc.Bind nLocalPort, IPAddress(i)
    
     IsOneWorking = True
    
     Exit For
    NextFor:
     Winsock_bc.Close
     Next
    
     If Not IsOneWorking Then
     MsgBox "当前网络中没有一块网卡可用!", vbOKOnly, "网络连接错误"
     End If
    其中,Winsock_bc为Winsock控件名,RemoteHost(i)、IPAddress(i)分别为第i块网卡的广播地址及IP。如能解答不胜感激,谢谢!另外,如何编程才能获得本地机器的多块网卡的IP地址?

回答:

    程序修改如下:
     Err.Clear
     On Error Resume Next
     For i = 0 To UBound(IPAddress)
     Winsock_bc.Protocol = sckUDPProtocol
     Winsock_bc.RemotePort = 4000
     Winsock_bc.LocalPort = 4000
     Winsock_bc.RemoteHost = RemoteHost(i)
     Winsock_bc.Bind nLocalPortIPAddress(i)
     If Err.Number = 0 Then
     IsOneWorking = True
     Exit For
     Else
     Winsock_bc.Close
     Err.Clear
     End If
     Next
    
     If NOT IsOneWorking Then
     MsgBox "当前网络中没有一块网卡可用 !", vbOKOnly, "网 络 连 接 错 误 "
     End If

此问题由jsfnman回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio