home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / CODE_UPLOAD16034352001.psc / WsockAPI.bas < prev   
Encoding:
BASIC Source File  |  2000-12-21  |  17.3 KB  |  259 lines

  1. Attribute VB_Name = "WinsockApi"
  2. 'date stamp: aug 28, 1996 (for version control, please don't remove)
  3.  
  4. 'Visual Basic 4.0 Winsock "Header"
  5. '   Alot of the information contained inside this file was originally
  6. '   obtained from ALT.WINSOCK.PROGRAMMING and most of it has since been
  7. '   modified in some way.
  8. '
  9. 'Disclaimer: This file is public domain, updated periodically by
  10. '   Topaz, SigSegV@mail.utexas.edu, Use it at your own risk.
  11. '   Neither myself(Topaz) or anyone related to alt.programming.winsock
  12. '   may be held liable for its use, or misuse.
  13. '
  14. 'Declare check Aug 27, 1996. (Topaz, SigSegV@mail.utexas.edu)
  15. '   All 16 bit declarations appear correct, even the odd ones that
  16. '   pass longs inplace of in_addr and char buffers. 32 bit functions
  17. '   also appear correct. Some are declared to return integers instead of
  18. '   longs (breaking MS's rules.) however after testing these functions I
  19. '   have come to the conclusion that they do not work properly when declared
  20. '   following MS's rules.
  21. '
  22. 'NOTES:
  23. '   (1) I have never used WS_SELECT (select), therefore I must warn that I do
  24. '       not know if fd_set and timeval are properly defined.
  25. '   (2) Alot of the functions are declared with "buf as any", when calling these
  26. '       functions you may either pass strings, byte arrays or UDT's. For 32bit I
  27. '       I recommend Byte arrays and the use of memcopy to copy the data back out
  28. '   (3) The async functions (wsaAsync*) require the use of a message hook or
  29. '       message window control to capture messages sent by the winsock stack. This
  30. '       is not to be confused with a CallBack control, The only function that uses
  31. '       callbacks is WSASetBlockingHook()
  32. '   (4) Alot of "helper" functions are provided in the file for various things
  33. '       before attempting to figure out how to call a function, look and see if
  34. '       there is already a helper function for it.
  35. Option Explicit
  36.  
  37. Public Const FD_SETSIZE = 64
  38. Type fd_set
  39.     fd_count As Integer
  40.     fd_array(FD_SETSIZE) As Integer
  41. End Type
  42.  
  43. Type timeval
  44.     tv_sec As Long
  45.     tv_usec As Long
  46. End Type
  47.  
  48. Type HostEnt
  49.     h_name As Long
  50.     h_aliases As Long
  51.     h_addrtype As Integer
  52.     h_length As Integer
  53.     h_addr_list As Long
  54. End Type
  55. Public Const hostent_size = 16
  56.  
  57. Type servent
  58.     s_name As Long
  59.     s_aliases As Long
  60.     s_port As Integer
  61.     s_proto As Long
  62. End Type
  63. Public Const servent_size = 14
  64.  
  65. Type protoent
  66.     p_name As Long
  67.     p_aliases As Long
  68.     p_proto As Integer
  69. End Type
  70. Public Const protoent_size = 10
  71.  
  72. Public Const IPPROTO_TCP = 6
  73. Public Const IPPROTO_UDP = 17
  74.  
  75. Public Const INADDR_NONE = &HFFFF
  76. Public Const INADDR_ANY = &H0
  77.  
  78. Type sockaddr
  79.     sin_family As Integer
  80.     sin_port As Integer
  81.     sin_addr As Long
  82.     sin_zero As String * 8
  83. End Type
  84. Public Const sockaddr_size = 16
  85. Public saZero As sockaddr
  86.  
  87.  
  88. Public Const WSA_DESCRIPTIONLEN = 256
  89. Public Const WSA_DescriptionSize = WSA_DESCRIPTIONLEN + 1
  90.  
  91. Public Const WSA_SYS_STATUS_LEN = 128
  92. Public Const WSA_SysStatusSize = WSA_SYS_STATUS_LEN + 1
  93.  
  94. Type WSADataType
  95.     wVersion As Integer
  96.     wHighVersion As Integer
  97.     szDescription As String * WSA_DescriptionSize
  98.     szSystemStatus As String * WSA_SysStatusSize
  99.     iMaxSockets As Integer
  100.     iMaxUdpDg As Integer
  101.     lpVendorInfo As Long
  102. End Type
  103.  
  104. Public Const INVALID_SOCKET = -1
  105. Public Const SOCKET_ERROR = -1
  106.  
  107. Public Const SOCK_STREAM = 1
  108. Public Const SOCK_DGRAM = 2
  109.  
  110. Public Const MAXGETHOSTSTRUCT = 1024
  111.  
  112. Public Const AF_INET = 2
  113. Public Const PF_INET = 2
  114.  
  115. Type LingerType
  116.     l_onoff As Integer
  117.     l_linger As Integer
  118. End Type
  119.  
  120.  
  121.  
  122. #If Win16 Then
  123. '---Windows System functions
  124.     Public Declare Function PostMessage Lib "User" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Integer
  125.     Public Declare Sub MemCopy Lib "Kernel" Alias "hmemcpy" (Dest As Any, Src As Any, ByVal cb&)
  126.     Public Declare Function lstrlen Lib "Kernel" (ByVal lpString As Any) As Integer
  127. '---async notification constants
  128.     Public Const SOL_SOCKET = &HFFFF
  129.     Public Const SO_LINGER = &H80
  130.     Public Const FD_READ = &H1
  131.     Public Const FD_WRITE = &H2
  132.     Public Const FD_OOB = &H4
  133.     Public Const FD_ACCEPT = &H8
  134.     Public Const FD_CONNECT = &H10
  135.     Public Const FD_CLOSE = &H20
  136. '---SOCKET FUNCTIONS
  137.     Public Declare Function accept Lib "Winsock.dll" (ByVal S As Integer, addr As sockaddr, addrlen As Integer) As Integer
  138.     Public Declare Function bind Lib "Winsock.dll" (ByVal S As Integer, addr As sockaddr, ByVal namelen As Integer) As Integer
  139.     Public Declare Function closesocket Lib "Winsock.dll" (ByVal S As Integer) As Integer
  140.     Public Declare Function connect Lib "Winsock.dll" (ByVal S As Integer, addr As sockaddr, ByVal namelen As Integer) As Integer
  141.     Public Declare Function ioctlsocket Lib "Winsock.dll" (ByVal S As Integer, ByVal cmd As Long, argp As Long) As Integer
  142.     Public Declare Function getpeername Lib "Winsock.dll" (ByVal S As Integer, sname As sockaddr, namelen As Integer) As Integer
  143.     Public Declare Function getsockname Lib "Winsock.dll" (ByVal S As Integer, sname As sockaddr, namelen As Integer) As Integer
  144.     Public Declare Function getsockopt Lib "Winsock.dll" (ByVal S As Integer, ByVal level As Integer, ByVal optname As Integer, optval As Any, optlen As Integer) As Integer
  145.     Public Declare Function htonl Lib "Winsock.dll" (ByVal hostlong As Long) As Long
  146.     Public Declare Function htons Lib "Winsock.dll" (ByVal hostshort As Integer) As Integer
  147.     Public Declare Function inet_addr Lib "Winsock.dll" (ByVal cp As String) As Long
  148.     Public Declare Function inet_ntoa Lib "Winsock.dll" (ByVal inn As Long) As Long
  149.     Public Declare Function listen Lib "Winsock.dll" (ByVal S As Integer, ByVal backlog As Integer) As Integer
  150.     Public Declare Function ntohl Lib "Winsock.dll" (ByVal netlong As Long) As Long
  151.     Public Declare Function ntohs Lib "Winsock.dll" (ByVal netshort As Integer) As Integer
  152.     Public Declare Function recv Lib "Winsock.dll" (ByVal S As Integer, buf As Any, ByVal buflen As Integer, ByVal flags As Integer) As Integer
  153.     Public Declare Function recvfrom Lib "Winsock.dll" (ByVal S As Integer, buf As Any, ByVal buflen As Integer, ByVal flags As Integer, from As sockaddr, fromlen As Integer) As Integer
  154.     Public Declare Function ws_select Lib "Winsock.dll" Alias "select" (ByVal nfds As Integer, readfds As fd_set, writefds As fd_set, exceptfds As fd_set, TimeOut As timeval) As Integer
  155.     Public Declare Function send Lib "Winsock.dll" (ByVal S As Integer, buf As Any, ByVal buflen As Integer, ByVal flags As Integer) As Integer
  156.     Public Declare Function sendto Lib "Winsock.dll" (ByVal S As Integer, buf As Any, ByVal buflen As Integer, ByVal flags As Integer, to_addr As sockaddr, ByVal tolen As Integer) As Integer
  157.     Public Declare Function setsockopt Lib "Winsock.dll" (ByVal S As Integer, ByVal level As Integer, ByVal optname As Integer, optval As Any, ByVal optlen As Integer) As Integer
  158.     Public Declare Function ShutDown Lib "Winsock.dll" Alias "shutdown" (ByVal S As Integer, ByVal how As Integer) As Integer
  159.     Public Declare Function Socket Lib "Winsock.dll" Alias "socket" (ByVal af As Integer, ByVal s_type As Integer, ByVal protocol As Integer) As Integer
  160. '---DATABASE FUNCTIONS
  161.     Public Declare Function gethostbyaddr Lib "Winsock.dll" (addr As Long, ByVal addr_len As Integer, ByVal addr_type As Integer) As Long
  162.     Public Declare Function gethostbyname Lib "Winsock.dll" (ByVal host_name As String) As Long
  163.     Public Declare Function gethostname Lib "Winsock.dll" (ByVal host_name As String, ByVal namelen As Integer) As Integer
  164.     Public Declare Function getservbyport Lib "Winsock.dll" (ByVal Port As Integer, ByVal proto As String) As Long
  165.     Public Declare Function getservbyname Lib "Winsock.dll" (ByVal serv_name As String, ByVal proto As String) As Long
  166.     Public Declare Function getprotobynumber Lib "Winsock.dll" (ByVal proto As Integer) As Long
  167.     Public Declare Function getprotobyname Lib "Winsock.dll" (ByVal proto_name As String) As Long
  168. '---WINDOWS EXTENSIONS
  169.     Public Declare Function WSAStartup Lib "Winsock.dll" (ByVal wVR As Integer, lpWSAD As WSADataType) As Integer
  170.     Public Declare Function WSACleanup Lib "Winsock.dll" () As Integer
  171.     Public Declare Sub WSASetLastError Lib "Winsock.dll" (ByVal iError As Integer)
  172.     Public Declare Function WSAGetLastError Lib "Winsock.dll" () As Integer
  173.     Public Declare Function WSAIsBlocking Lib "Winsock.dll" () As Integer
  174.     Public Declare Function WSAUnhookBlockingHook Lib "Winsock.dll" () As Integer
  175.     Public Declare Function WSASetBlockingHook Lib "Winsock.dll" (ByVal lpBlockFunc As Long) As Long
  176.     Public Declare Function WSACancelBlockingCall Lib "Winsock.dll" () As Integer
  177.     Public Declare Function WSAAsyncGetServByName Lib "Winsock.dll" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal serv_name As String, ByVal proto As String, buf As Any, ByVal buflen As Integer) As Integer
  178.     Public Declare Function WSAAsyncGetServByPort Lib "Winsock.dll" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal Port As Integer, ByVal proto As String, buf As Any, ByVal buflen As Integer) As Integer
  179.     Public Declare Function WSAAsyncGetProtoByName Lib "Winsock.dll" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal proto_name As String, buf As Any, ByVal buflen As Integer) As Integer
  180.     Public Declare Function WSAAsyncGetProtoByNumber Lib "Winsock.dll" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal number As Integer, buf As Any, ByVal buflen As Integer) As Integer
  181.     Public Declare Function WSAAsyncGetHostByName Lib "Winsock.dll" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal host_name As String, buf As Any, ByVal buflen As Integer) As Integer
  182.     Public Declare Function WSAAsyncGetHostByAddr Lib "Winsock.dll" (ByVal hWnd As Integer, ByVal wMsg As Integer, addr As Long, ByVal addr_len As Integer, ByVal addr_type As Integer, buf As Any, ByVal buflen As Integer) As Integer
  183.     Public Declare Function WSACancelAsyncRequest Lib "Winsock.dll" (ByVal hAsyncTaskHandle As Integer) As Integer
  184.     Public Declare Function WSAAsyncSelect Lib "Winsock.dll" (ByVal S As Integer, ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal lEvent As Long) As Integer
  185.     Public Declare Function WSARecvEx Lib "Winsock.dll" (ByVal S As Integer, buf As Any, ByVal buflen As Integer, ByVal flags As Integer) As Integer
  186. #ElseIf Win32 Then
  187. '---Windows System Functions
  188.     Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  189.     Public Declare Sub MemCopy Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal cb&)
  190.     Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Any) As Long
  191. '---async notification constants
  192.     Public Const SOL_SOCKET = &HFFFF&
  193.     Public Const SO_LINGER = &H80&
  194.     Public Const FD_READ = &H1&
  195.     Public Const FD_WRITE = &H2&
  196.     Public Const FD_OOB = &H4&
  197.     Public Const FD_ACCEPT = &H8&
  198.     Public Const FD_CONNECT = &H10&
  199.     Public Const FD_CLOSE = &H20&
  200. '---SOCKET FUNCTIONS
  201.     Public Declare Function accept Lib "wsock32.dll" (ByVal S As Long, addr As sockaddr, addrlen As Long) As Long
  202.     Public Declare Function bind Lib "wsock32.dll" (ByVal S As Long, addr As sockaddr, ByVal namelen As Long) As Long
  203.     Public Declare Function closesocket Lib "wsock32.dll" (ByVal S As Long) As Long
  204.     Public Declare Function connect Lib "wsock32.dll" (ByVal S As Long, addr As sockaddr, ByVal namelen As Long) As Long
  205.     Public Declare Function ioctlsocket Lib "wsock32.dll" (ByVal S As Long, ByVal cmd As Long, argp As Long) As Long
  206.     Public Declare Function getpeername Lib "wsock32.dll" (ByVal S As Long, sname As sockaddr, namelen As Long) As Long
  207.     Public Declare Function getsockname Lib "wsock32.dll" (ByVal S As Long, sname As sockaddr, namelen As Long) As Long
  208.     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
  209.     Public Declare Function htonl Lib "wsock32.dll" (ByVal hostlong As Long) As Long
  210.     Public Declare Function htons Lib "wsock32.dll" (ByVal hostshort As Long) As Integer
  211.     Public Declare Function inet_addr Lib "wsock32.dll" (ByVal cp As String) As Long
  212.     Public Declare Function inet_ntoa Lib "wsock32.dll" (ByVal inn As Long) As Long
  213.     Public Declare Function listen Lib "wsock32.dll" (ByVal S As Long, ByVal backlog As Long) As Long
  214.     Public Declare Function ntohl Lib "wsock32.dll" (ByVal netlong As Long) As Long
  215.     Public Declare Function ntohs Lib "wsock32.dll" (ByVal netshort As Long) As Integer
  216.     Public Declare Function recv Lib "wsock32.dll" (ByVal S As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long) As Long
  217.     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
  218.     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
  219.     Public Declare Function send Lib "wsock32.dll" (ByVal S As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long) As Long
  220.     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
  221.     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
  222.     Public Declare Function ShutDown Lib "wsock32.dll" Alias "shutdown" (ByVal S As Long, ByVal how As Long) As Long
  223.     Public Declare Function Socket Lib "wsock32.dll" Alias "socket" (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long
  224. '---DATABASE FUNCTIONS
  225.     Public Declare Function gethostbyaddr Lib "wsock32.dll" (addr As Long, ByVal addr_len As Long, ByVal addr_type As Long) As Long
  226.     Public Declare Function gethostbyname Lib "wsock32.dll" (ByVal host_name As String) As Long
  227.     Public Declare Function gethostname Lib "wsock32.dll" (ByVal host_name As String, ByVal namelen As Long) As Long
  228.     Public Declare Function getservbyport Lib "wsock32.dll" (ByVal Port As Long, ByVal proto As String) As Long
  229.     Public Declare Function getservbyname Lib "wsock32.dll" (ByVal serv_name As String, ByVal proto As String) As Long
  230.     Public Declare Function getprotobynumber Lib "wsock32.dll" (ByVal proto As Long) As Long
  231.     Public Declare Function getprotobyname Lib "wsock32.dll" (ByVal proto_name As String) As Long
  232. '---WINDOWS EXTENSIONS
  233.     Public Declare Function WSAStartup Lib "wsock32.dll" (ByVal wVR As Long, lpWSAD As WSADataType) As Long
  234.     Public Declare Function WSACleanup Lib "wsock32.dll" () As Long
  235.     Public Declare Sub WSASetLastError Lib "wsock32.dll" (ByVal iError As Long)
  236.     Public Declare Function WSAGetLastError Lib "wsock32.dll" () As Long
  237.     Public Declare Function WSAIsBlocking Lib "wsock32.dll" () As Long
  238.     Public Declare Function WSAUnhookBlockingHook Lib "wsock32.dll" () As Long
  239.     Public Declare Function WSASetBlockingHook Lib "wsock32.dll" (ByVal lpBlockFunc As Long) As Long
  240.     Public Declare Function WSACancelBlockingCall Lib "wsock32.dll" () As Long
  241.     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
  242.     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
  243.     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
  244.     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
  245.     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
  246.     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
  247.     Public Declare Function WSACancelAsyncRequest Lib "wsock32.dll" (ByVal hAsyncTaskHandle As Long) As Long
  248.     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
  249.     Public Declare Function WSARecvEx Lib "wsock32.dll" (ByVal S As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long) As Long
  250. #End If
  251.  
  252.  
  253. 'SOME STUFF I ADDED
  254. Public MySocket%
  255. Public SockReadBuffer$
  256. Public Const WSA_NoName = "Unknown"
  257. Public WSAStartedUp As Boolean     'Flag to keep track of whether winsock WSAStartup wascalled
  258.  
  259. 'these are old functions, or examples Lonb "wsock32.dll" (ByVal S As Long, buf As Any,nknowb "wsock32are old functions, or examples Lonb "woto_name Acname Acname Acname Acname Acnam  wH_32.dll" (addr As Long, ByVal a2.dll"  examMme Acname Aions, or examples Lonb "wsoByVal buflen As Long)sRnbuf As Any, ByVal buflen As Loe Integer, ByVal nung
  260.