'WSAData结构用来保存套接字初始化后的返回信息
Public Type WSAData
    wVersion As Integer '套接字指定的dll版本
    wHighVersion As Integer 'dll支持的最高版本
    szDescription(0 To MAX_WSADescription) As Byte  '套接字描述信息
    szSystemStatus(0 To MAX_WSASYSStatus) As Byte   '系统状态
    wMaxSockets As Integer  '一个进程能打开的套接字数目
    wMaxUDPDG As Integer    '应用程序能传送的UDP(用户数据报协议)数据大小
    dwVendorInfo As Long    '一个指向数据结构的Far指针
End TypeType WSADataInfo
    wVersion As Integer
    wHighVersion As Integer
    szDescription As String * WSADESCRIPTION_LEN
    szSystemStatus As String * WSASYS_STATUS_LEN
    iMaxSockets As Integer
    iMaxUdpDg As Integer
    lpVendorInfo As String
End Type请问这两个结构有什么区别?
还有“szDescription As String * WSADESCRIPTION_LEN”这一句中的“ * WSADESCRIPTION_LEN”
第三个问题:“iMaxSockets”和“wMaxSockets”仅有一个字母之差,这其中的“i”和“w”是何意呢
以及“dwVendorInfo”和“lpVendorInfo”中“dw”和“lp”又是何意呢?
 

解决方案 »

  1.   

    两个的原型均是:
    struct WSAData 
    {
        WORD             wVersion;
        WORD             wHighVersion;
        char             szDescription[WSADESCRIPTION_LEN+1];
        char             szSystemStatus[WSASYS_STATUS_LEN+1];
        unsigned short   iMaxSockets;
        unsigned short   iMaxUdpDg;
        char FAR *       lpVendorInfo;
    } WSADATA;szDescription As String * WSADESCRIPTION_LEN
    定义szDescription 为长度WSADESCRIPTION_LEN的字符串至于i w lp dw等只是一种命名规范              ___
                 (  ">
                  )(
                 // )  [email protected]
              --//""------------
              -/------   
      

  2.   

    你可以这样调用
    Declare Function WSAStartupInfo Lib "WSOCK32" Alias "WSAStartup" (ByVal
    wVersionRequested As Integer, lpWSADATA As
    WSADataInfo) As Long
    Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long,
    lpWSADATA As WSAData) As Long
    他们调用同一个api根据入口参数wVersionRequested类型 的不同返回的结构内容类型也不同
                  ___
                 (  ">
                  )(
                 // )  [email protected]
              --//""------------
              -/------