Winsock.bas
上传用户:guantou168
上传日期:2015-06-25
资源大小:74k
文件大小:12k
源码类别:

Ftp服务器

开发平台:

Visual Basic

  1. Attribute VB_Name = "Winsock"
  2. Option Explicit
  3. Public Const AF_UNSPEC = 0             '  /* unspecified */
  4. Public Const AF_UNIX = 1               '  /* local to host (pipes, portals) */
  5. Public Const AF_INET = 2               '  /* internetwork: UDP, TCP, etc. */
  6. Public Const AF_IMPLINK = 3            '  /* arpanet imp addresses */
  7. Public Const AF_PUP = 4                '  /* pup protocols: e.g. BSP */
  8. Public Const AF_CHAOS = 5              '  /* mit CHAOS protocols */
  9. Public Const AF_IPX = 6                '  /* IPX and SPX */
  10. Public Const AF_NS = 6                 '  /* XEROX NS protocols */
  11. Public Const AF_ISO = 7                '  /* ISO protocols */
  12. Public Const AF_OSI = AF_ISO           '  /* OSI is ISO */
  13. Public Const AF_ECMA = 8               '  /* european computer manufacturers */
  14. Public Const AF_DATAKIT = 9            '  /* datakit protocols */
  15. Public Const AF_CCITT = 10             '  /* CCITT protocols, X.25 etc */
  16. Public Const AF_SNA = 11               '  /* IBM SNA */
  17. Public Const AF_DECnet = 12            '  /* DECnet */
  18. Public Const AF_DLI = 13               '  /* Direct data link interface */
  19. Public Const AF_LAT = 14               '  /* LAT */
  20. Public Const AF_HYLINK = 15            '  /* NSC Hyperchannel */
  21. Public Const AF_APPLETALK = 16         '  /* AppleTalk */
  22. Public Const AF_NETBIOS = 17           '  /* NetBios-style addresses */
  23. Public Const FD_READ = &H1
  24. Public Const FD_WRITE = &H2
  25. Public Const FD_OOB = &H4
  26. Public Const FD_ACCEPT = &H8
  27. Public Const FD_CONNECT = &H10
  28. Public Const FD_CLOSE = &H20
  29. Public Const FD_SETSIZE% = 64
  30. Public Const SOL_SOCKET = &HFFFF
  31. Public Const SO_LINGER = &H80
  32. Public Const INVALID_SOCKET = -1
  33. Public Const SOCKET_ERROR = -1
  34. Public Const BAD_SOCKET = -1
  35. Public Const UNRESOLVED_HOST = -2
  36. Public Const UNABLE_TO_BIND = -3
  37. Public Const UNABLE_TO_CONNECT = -4
  38.  
  39. Public Const WIN_SOCKET_MSG = 2000
  40. Public Const MAX_WSADescription = 257
  41. Public Const MAX_WSASYSStatus = 129
  42. Public Const WS_VERSION_REQD As Integer = &H101
  43. Public Const WS_VERSION_MAJOR = WS_VERSION_REQD / &H100 And &HFF&
  44. Public Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&
  45. Public Const IP_OPTIONS = 1
  46. Public Const MIN_SOCKETS_REQD = 0
  47. '--- additional declarations
  48. 'Types
  49. Public Const SOCK_STREAM = 1
  50. Public Const SOCK_DGRAM = 2
  51. Public Const SOCK_RAW = 3
  52. Public Const SOCK_RDM = 4
  53. Public Const SOCK_SEQPACKET = 5
  54. 'Protocol families, same as address families for now
  55. Public Const PF_UNSPEC = 0
  56. Public Const PF_UNIX = 1
  57. Public Const PF_INET = 2
  58. Public Const PF_IMPLINK = 3
  59. Public Const PF_PUP = 4
  60. Public Const PF_CHAOS = 5
  61. Public Const PF_IPX = 6
  62. Public Const PF_NS = 6
  63. Public Const PF_ISO = 7
  64. Public Const PF_OSI = AF_ISO
  65. Public Const PF_ECMA = 8
  66. Public Const PF_DATAKIT = 9
  67. Public Const PF_CCITT = 10
  68. Public Const PF_SNA = 11
  69. Public Const PF_DECnet = 12
  70. Public Const PF_DLI = 13
  71. Public Const PF_LAT = 14
  72. Public Const PF_HYLINK = 15
  73. Public Const PF_APPLETALK = 16
  74. Public Const PF_NETBIOS = 17
  75. Public Const MAXGETHOSTSTRUCT = 1024
  76. Public Const IPPROTO_TCP = 6
  77. Public Const IPPROTO_UDP = 17
  78. Public Const INADDR_NONE = &HFFFF
  79. Public Const INADDR_ANY = &H0
  80. ' Windows Sockets definitions of regular Microsoft C error constants
  81. Public Const WSAEINTR = 10004
  82. Public Const WSAEBADF = 10009
  83. Public Const WSAEACCES = 10013
  84. Public Const WSAEFAULT = 10014
  85. Public Const WSAEINVAL = 10022
  86. Public Const WSAEMFILE = 10024
  87. ' Windows Sockets definitions of regular Berkeley error constants
  88. Public Const WSAEWOULDBLOCK = 10035
  89. Public Const WSAEINPROGRESS = 10036
  90. Public Const WSAEALREADY = 10037
  91. Public Const WSAENOTSOCK = 10038
  92. Public Const WSAEDESTADDRREQ = 10039
  93. Public Const WSAEMSGSIZE = 10040
  94. Public Const WSAEPROTOTYPE = 10041
  95. Public Const WSAENOPROTOOPT = 10042
  96. Public Const WSAEPROTONOSUPPORT = 10043
  97. Public Const WSAESOCKTNOSUPPORT = 10044
  98. Public Const WSAEOPNOTSUPP = 10045
  99. Public Const WSAEPFNOSUPPORT = 10046
  100. Public Const WSAEAFNOSUPPORT = 10047
  101. Public Const WSAEADDRINUSE = 10048
  102. Public Const WSAEADDRNOTAVAIL = 10049
  103. Public Const WSAENETDOWN = 10050
  104. Public Const WSAENETUNREACH = 10051
  105. Public Const WSAENETRESET = 10052
  106. Public Const WSAECONNABORTED = 10053
  107. Public Const WSAECONNRESET = 10054
  108. Public Const WSAENOBUFS = 10055
  109. Public Const WSAEISCONN = 10056
  110. Public Const WSAENOTCONN = 10057
  111. Public Const WSAESHUTDOWN = 10058
  112. Public Const WSAETOOMANYREFS = 10059
  113. Public Const WSAETIMEDOUT = 10060
  114. Public Const WSAECONNREFUSED = 10061
  115. Public Const WSAELOOP = 10062
  116. Public Const WSAENAMETOOLONG = 10063
  117. Public Const WSAEHOSTDOWN = 10064
  118. Public Const WSAEHOSTUNREACH = 10065
  119. Public Const WSAENOTEMPTY = 10066
  120. Public Const WSAEPROCLIM = 10067
  121. Public Const WSAEUSERS = 10068
  122. Public Const WSAEDQUOT = 10069
  123. Public Const WSAESTALE = 10070
  124. Public Const WSAEREMOTE = 10071
  125. ' Extended Windows Sockets error constant definitions
  126. Public Const WSASYSNOTREADY = 10091
  127. Public Const WSAVERNOTSUPPORTED = 10092
  128. Public Const WSANOTINITIALISED = 10093
  129. Public Const WSAHOST_NOT_FOUND = 11001
  130. Public Const WSATRY_AGAIN = 11002
  131. Public Const WSANO_RECOVERY = 11003
  132. Public Const WSANO_DATA = 11004
  133. Public Const WSANO_ADDRESS = 11004
  134. Type hostent
  135.     h_name As Long
  136.     h_aliases As Long
  137.     h_addrtype As Integer
  138.     h_length As Integer
  139.     h_addr_list As Long
  140. End Type
  141. Public hostent As hostent
  142. Type WSAdata
  143.     wVersion As Integer
  144.     wHighVersion As Integer
  145.     szDescription As String * MAX_WSADescription '(0 To 255) As Byte
  146.     szSystemStatus As String * MAX_WSASYSStatus  '(0 To 128) As Byte
  147.     iMaxSockets As Integer
  148.     iMaxUdpDg As Integer
  149.     lpVendorInfo As Long
  150. End Type
  151. Public WSAdata As WSAdata
  152. Type Inet_Address     ' IP Address in Network Order
  153.     Byte4 As Byte     '
  154.     Byte3 As Byte     '
  155.     Byte2 As Byte     '
  156.     Byte1 As Byte     '
  157. End Type
  158. Public IPLong As Inet_Address
  159. 'socket address
  160. Type SockAddr
  161.     sin_family As Integer   ' Address family
  162.     sin_port As Integer     ' Port Number in Network Order
  163.     sin_addr As Long        ' IP Address as Long
  164.     sin_zero As String * 8  '(8) As Byte             ' Padding
  165. End Type
  166. Public SockAddr As SockAddr
  167. Public Const SockAddr_Size = 16
  168. Type hostent_async
  169.     h_name As Long
  170.     h_aliases As Long
  171.     h_addrtype As Integer
  172.     h_length As Integer
  173.     h_addr_list As Long
  174.     h_asyncbuffer(MAXGETHOSTSTRUCT) As Byte
  175. End Type
  176. Public hostent_async As hostent_async
  177. Type fd_set
  178.   fd_count As Integer          '' how many are in the set
  179.   fd_array(FD_SETSIZE) As Long '' array of SOCKET handles (64)
  180. End Type
  181. Public fd_set As fd_set
  182. Type timeval
  183.     tv_sec As Long
  184.     tv_usec As Long
  185. End Type
  186. Public timeval As timeval
  187. Type LingerType
  188.     l_onoff As Integer
  189.     l_linger As Integer
  190. End Type
  191. '---SOCKET FUNCTIONS
  192.     Public Declare Function accept Lib "wsock32.dll" (ByVal s As Long, addr As SockAddr, addrlen As Long) As Long
  193.     Public Declare Function bind Lib "wsock32.dll" (ByVal s As Long, addr As SockAddr, ByVal namelen As Long) As Long
  194.     Public Declare Function closesocket Lib "wsock32.dll" (ByVal s As Long) As Long
  195.     Public Declare Function connect Lib "wsock32.dll" (ByVal s As Long, addr As SockAddr, ByVal namelen As Long) As Long
  196.     Public Declare Function ioctlsocket Lib "wsock32.dll" (ByVal s As Long, ByVal cmd As Long, argp As Long) As Long
  197.     Public Declare Function getpeername Lib "wsock32.dll" (ByVal s As Long, sName As SockAddr, namelen As Long) As Long
  198.     Public Declare Function getsockname Lib "wsock32.dll" (ByVal s As Long, sName As SockAddr, namelen As Long) As Long
  199.     Public Declare Function getsockopt Lib "wsock32.dll" (ByVal s As Long, ByVal Level As Long, ByVal optname As Long, optval As Any, optlen As Long) As Long
  200.     Public Declare Function htonl Lib "wsock32.dll" (ByVal hostlong As Long) As Long
  201.     Public Declare Function htons Lib "wsock32.dll" (ByVal hostshort As Long) As Integer
  202.     Public Declare Function inet_addr Lib "wsock32.dll" (ByVal CP As String) As Long
  203.     Public Declare Function inet_ntoa Lib "wsock32.dll" (ByVal inn As Long) As Long
  204.     Public Declare Function listen Lib "wsock32.dll" (ByVal s As Long, ByVal backlog As Long) As Long
  205.     Public Declare Function ntohl Lib "wsock32.dll" (ByVal netlong As Long) As Long
  206.     Public Declare Function ntohs Lib "wsock32.dll" (ByVal netshort As Long) As Integer
  207.     Public Declare Function recv Lib "wsock32.dll" (ByVal s As Long, ByVal buf As Any, ByVal buflen As Long, ByVal FLAGS As Long) As Long
  208.     Public Declare Function recvfrom Lib "wsock32.dll" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal FLAGS As Long, from As SockAddr, fromlen As Long) As Long
  209.     Public Declare Function ws_select Lib "wsock32.dll" Alias "select" (ByVal nfds As Long, readfds As fd_set, writefds As fd_set, exceptfds As fd_set, timeout As timeval) As Long
  210.     Public Declare Function send Lib "wsock32.dll" (ByVal s As Long, ByVal buf As Any, ByVal buflen As Long, ByVal FLAGS As Long) As Long
  211.     Public Declare Function sendto Lib "wsock32.dll" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal FLAGS As Long, to_addr As SockAddr, ByVal tolen As Long) As Long
  212.     Public Declare Function setsockopt Lib "wsock32.dll" (ByVal s As Long, ByVal Level As Long, ByVal optname As Long, optval As Any, ByVal optlen As Long) As Long
  213.     Public Declare Function ShutDown Lib "wsock32.dll" Alias "shutdown" (ByVal s As Long, ByVal how As Long) As Long
  214.     Public Declare Function Socket Lib "wsock32.dll" Alias "socket" (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long
  215. '---DATABASE FUNCTIONS
  216.     Public Declare Function gethostbyaddr Lib "wsock32.dll" (addr As Long, ByVal addr_len As Long, ByVal addr_type As Long) As Long
  217.     Public Declare Function gethostbyname Lib "wsock32.dll" (ByVal host_name As String) As Long
  218.     Public Declare Function gethostname Lib "wsock32.dll" (ByVal host_name As String, ByVal namelen As Long) As Long
  219.     Public Declare Function getservbyport Lib "wsock32.dll" (ByVal Port As Long, ByVal proto As String) As Long
  220.     Public Declare Function getservbyname Lib "wsock32.dll" (ByVal serv_name As String, ByVal proto As String) As Long
  221.     Public Declare Function getprotobynumber Lib "wsock32.dll" (ByVal proto As Long) As Long
  222.     Public Declare Function getprotobyname Lib "wsock32.dll" (ByVal proto_name As String) As Long
  223. '---WINDOWS EXTENSIONS
  224.     Public Declare Function WSAStartup Lib "wsock32.dll" (ByVal wVR As Long, lpWSAD As WSAdata) As Long
  225.     Public Declare Function WSACleanup Lib "wsock32.dll" () As Long
  226.     Public Declare Function WSASetLastError Lib "wsock32.dll" (ByVal iError As Long) As Long
  227.     Public Declare Function WSAGetLastError Lib "wsock32.dll" () As Long
  228.     Public Declare Function WSAIsBlocking Lib "wsock32.dll" () As Long
  229.     Public Declare Function WSAUnhookBlockingHook Lib "wsock32.dll" () As Long
  230.     Public Declare Function WSASetBlockingHook Lib "wsock32.dll" (ByVal lpBlockFunc As Long) As Long
  231.     Public Declare Function WSACancelBlockingCall Lib "wsock32.dll" () As Long
  232.     Public Declare Function WSAAsyncGetServByName Lib "wsock32.dll" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal serv_name As String, ByVal proto As String, buf As Any, ByVal buflen As Long) As Long
  233.     Public Declare Function WSAAsyncGetServByPort Lib "wsock32.dll" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal Port As Long, ByVal proto As String, buf As Any, ByVal buflen As Long) As Long
  234.     Public Declare Function WSAAsyncGetProtoByName Lib "wsock32.dll" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal proto_name As String, buf As Any, ByVal buflen As Long) As Long
  235.     Public Declare Function WSAAsyncGetProtoByNumber Lib "wsock32.dll" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal Number As Long, buf As Any, ByVal buflen As Long) As Long
  236.     Public Declare Function WSAAsyncGetHostByName Lib "wsock32.dll" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal host_name As String, buf As Any, ByVal buflen As Long) As Long
  237.     Public Declare Function WSAAsyncGetHostByAddr Lib "wsock32.dll" (ByVal hWnd As Long, ByVal wMsg As Long, addr As Long, ByVal addr_len As Long, ByVal addr_type As Long, buf As Any, ByVal buflen As Long) As Long
  238.     Public Declare Function WSACancelAsyncRequest Lib "wsock32.dll" (ByVal hAsyncTaskHandle As Long) As Long
  239.     Public Declare Function WSAAsyncSelect Lib "wsock32.dll" (ByVal s As Long, ByVal hWnd As Long, ByVal wMsg As Long, ByVal lEvent As Long) As Long
  240.     Public Declare Function WSARecvEx Lib "wsock32.dll" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal FLAGS As Long) As Long