Socket Api模块.doc_第1页
Socket Api模块.doc_第2页
Socket Api模块.doc_第3页
Socket Api模块.doc_第4页
Socket Api模块.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Option ExplicitPublic Const WINSOCK_MESSAGE As Long = 1025Public Const FD_SETSIZE = 64Type IN_ADDRS_un_b(1 To 4) As ByteS_un_w(1 To 2) As IntegerS_addr As LongEnd TypeType fd_setfd_count As Integerfd_array(FD_SETSIZE) As IntegerEnd TypeType timevaltv_sec As Longtv_usec As LongEnd TypeType HostEnth_name As Longh_aliases As Longh_addrtype As Integerh_length As Integerh_addr_list As LongEnd TypePublic Const hostent_size = 16Type servents_name As Longs_aliases As Longs_port As Integers_proto As LongEnd TypePublic Const servent_size = 14Type protoentp_name As Longp_aliases As Longp_proto As IntegerEnd TypePublic Const protoent_size = 10Public Const IPPROTO_TCP = 6Public Const IPPROTO_UDP = 17Public Const INADDR_NONE = &HFFFFPublic Const INADDR_ANY = &H0Type sockaddrsin_family As Integersin_port As Integersin_addr As Longsin_zero As String * 8End TypePublic Const sockaddr_size = 16Public saZero As sockaddrPublic Const WSA_DESCRIPTIONLEN = 256Public Const WSA_DescriptionSize = WSA_DESCRIPTIONLEN + 1Public Const WSA_SYS_STATUS_LEN = 128Public Const WSA_SysStatusSize = WSA_SYS_STATUS_LEN + 1Type WSADataTypewVersion As IntegerwHighVersion As IntegerszDescription As String * WSA_DescriptionSizeszSystemStatus As String * WSA_SysStatusSizeiMaxSockets As IntegeriMaxUdpDg As IntegerlpVendorInfo As LongEnd TypePublic Const INVALID_SOCKET = -1Public Const SOCKET_ERROR = -1Public Const SOCK_STREAM = 1Public Const SOCK_DGRAM = 2Public Const MAXGETHOSTSTRUCT = 1024Public Const AF_INET = 2Public Const PF_INET = 2Type LingerTypel_onoff As Integerl_linger As IntegerEnd Type#If Win16 Then-Windows System functions(windows系统函数)发送消息函数,把一条消息放到创建hwnd窗口的线程队列中,函数不等待消息被处理就马上将控制返回。Public Declare Function PostMessage Lib User (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Integer由src所指内存区域复制count个字节到dest所指内存区域,src和dest所指内存区域不能重叠,函数返回指向dest的指针。Public Declare Sub MemCopy Lib Kernel Alias hmemcpy (Dest As Any, Src As Any, ByVal cb&)该函数返回指定字符串的字节长度(ANSI版)或字符长度(双字节标准版);其中不包括终止NULL字符。Public Declare Function lstrlen Lib Kernel (ByVal lpString As Any) As Integer|-async notification constants(常数定义)Public Const SOL_SOCKET = &HFFFFPublic Const SO_LINGER = &H80Public Const FD_READ = &H1Public Const FD_WRITE = &H2Public Const FD_OOB = &H4Public Const FD_ACCEPT = &H8Public Const FD_CONNECT = &H10Public Const FD_CLOSE = &H20|-SOCKET FUNCTIONS(套接字函数)接受连接函数Public Declare Function accept Lib Winsock.dll (ByVal s As Integer, addr As sockaddr, addrlen As Integer) As Integer绑定函数Public Declare Function bind Lib Winsock.dll (ByVal s As Integer, addr As sockaddr, ByVal namelen As Integer) As Integer关闭套接字函数Public Declare Function closesocket Lib Winsock.dll (ByVal s As Integer) As Integer创建连接函数Public Declare Function Connect Lib Winsock.dll Alias connect (ByVal s As Integer, addr As sockaddr, ByVal namelen As Integer) As Integer控制套接口的模式Public Declare Function ioctlsocket Lib Winsock.dll (ByVal s As Integer, ByVal CMD As Long, argp As Long) As Integer用于从端口s中获取与它捆绑的端口名,并把它存放在sockaddr类型的name结构中。它适用于数据报或流类套接口Public Declare Function getpeername Lib Winsock.dll (ByVal s As Integer, sName As sockaddr, namelen As Integer) As Integer用于获取一个套接口的名字。它用于一个已捆绑或已连接套接口s,本地地址将被返回。Public Declare Function getsockname Lib Winsock.dll (ByVal s As Integer, sName As sockaddr, namelen As Integer) As Integer用于获取任意类型、任意状态套接口的选项当前值,并把结果存入optvalPublic 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将一个32位数从主机字节顺序转换成网络字节顺序Public Declare Function htonl Lib Winsock.dll (ByVal hostlong As Long) As Long将一个16位数从主机字节顺序转换成网络字节顺序Public Declare Function htons Lib Winsock.dll (ByVal hostshort As Integer) As Integer解释cp参数中的字符串,这个字符串用Internet的“.”间隔格式表示一个数字的Internet地址。返回值可用作Internet地址。所有Internet地址以网络字节顺序返回(字节从左到右排列)。Public Declare Function inet_addr Lib Winsock.dll (ByVal cp As String) As Long将一个用in参数所表示的Internet地址结构转换成以“.” 间隔的诸如“a.b.c.d”的字符串形式。Public Declare Function inet_ntoa Lib Winsock.dll (ByVal inn As Long) As Long创建一个套接口并监听申请的连接Public Declare Function listen Lib Winsock.dll (ByVal s As Integer, ByVal backlog As Integer) As Integer本函数将一个32位数由网络字节顺序转换为主机字节顺序Public Declare Function ntohl Lib Winsock.dll (ByVal netlong As Long) As Long将一个16位数由网络字节顺序转换为主机字节顺序Public Declare Function ntohs Lib Winsock.dll (ByVal netshort As Integer) As Integer数用于已连接的数据报或流式套接口s进行数据的接收Public Declare Function recv Lib Winsock.dll (ByVal s As Integer, buf As Any, ByVal buflen As Integer, ByVal flags As Integer) As Integer由于从(已连接)套接口上接收数据,并捕获数据发送源的地址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用于确定一个或多个套接口的状态。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用于已连接的数据报或流式套接口发送数据。对于数据报类套接口,必需注意发送数据长度不应超过通讯子网的IP包最大长度Public Declare Function Send Lib Winsock.dll Alias send (ByVal s As Integer, buf As Any, ByVal buflen As Integer, ByVal flags As Integer) As Integer用于已连接的数据报或流式套接口发送数据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设置套接口的选项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用于任何类型的套接口禁止接收、禁止发送或禁止收发Public Declare Function ShutDown Lib Winsock.dll Alias shutdown (ByVal s As Integer, ByVal how As Integer) As Integer用于根据指定的地址族、数据类型和协议来分配一个套接口的描述字及其所用的资源Public Declare Function socket Lib Winsock.dll (ByVal af As Integer, ByVal s_type As Integer, ByVal protocol As Integer) As Integer|-DATABASE FUNCTIONS(数据函数)返回对应于给定地址的主机信息。Public Declare Function gethostbyaddr Lib Winsock.dll (addr As Long, ByVal addr_len As Integer, ByVal addr_type As Integer) As Long返回对应于给定主机名的主机信息。Public Declare Function gethostbyname Lib Winsock.dll (ByVal host_name As String) As Long返回本地主机的标准主机名。Public Declare Function gethostname Lib Winsock.dll (ByVal host_name As String, ByVal namelen As Integer) As Integer返回对应于给定端口号和协议名的相关服务信息。Public Declare Function getservbyport Lib Winsock.dll (ByVal Port As Integer, ByVal proto As String) As Long返回对应于给定服务名和协议名的相关服务信息。Public Declare Function getservbyname Lib Winsock.dll (ByVal serv_name As String, ByVal proto As String) As Long返回对应于给定协议号的相关协议信息。Public Declare Function getprotobynumber Lib Winsock.dll (ByVal proto As Integer) As Long返回对应于给定协议名的相关协议信息。Public Declare Function getprotobyname Lib Winsock.dll (ByVal proto_name As String) As Long|-WINDOWS EXTENSIONS(系统扩充函数)Windows Sockets API提供的调用方可使用的最高版本号.高位字节指出副版本(修正)号,低位字节指明主版本号.Public Declare Function WSAStartup Lib Winsock.dll (ByVal wVR As Integer, lpWSAD As WSADataType) As Integer中止Windows Sockets DLL的使用.应用程序或DLL在使用Windows Sockets服务之前必须要进行一次成功的WSAStartup()调用Public Declare Function WSACleanup Lib Winsock.dll () As Integer设置可以被WSAGetLastError()接收的错误代码.Public Declare Sub WSASetLastError Lib Winsock.dll (ByVal iError As Integer)返回上次发生的网络错误.当一特定的Windows Sockets API函数指出一个错误已经发生,本函数就应调用来获得对应的错误代码.Public Declare Function WSAGetLastError Lib Winsock.dll () As Integer允许任务判断它是否在等待前一次阻塞调用完成时执行.Public Declare Function WSAIsBlocking Lib Winsock.dll () As Integer除去了任何先前安装的阻塞钩子函数,并且重新安装缺省的阻塞钩子函数.Public Declare Function WSAUnhookBlockingHook Lib Winsock.dll () As Integer本函数安装了一个新的函数,由Windows Sockets的实现用来实现阻塞套接口函数调用.Public Declare Function WSASetBlockingHook Lib Winsock.dll (ByVal lpBlockFunc As Long) As Long本函数取消了任何本任务中尚未完成的阻塞操作。Public Declare Function WSACancelBlockingCall Lib Winsock.dll () As Integer本函数是getservbyname()的异步版本,是用来获取对应于一个服务名的服务信息.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本函数是getservbyport()的异步版本,是用来获取对应于一个接口号的服务信息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本函数是getprotobyname()的异步版本,是用来获取对应于一个协议名的协议名称和代号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本函数是getprotobynumber()的异步版本,是用来获取对应于一个协议号的协议名称和代号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本函数是gethostbyname()的异步版本,是用来获取对应于一个主机名的主机名称和地址信息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本函数是gethostbyaddr()的异步版本,是用来获取对应于一个网络地址的主机名和地址信息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函数用于取消一次异步操作,该异步操作应是以一个WSAAsyncGetXByY()函数(诸如WSAAsyncGetHostByName()启动的Public Declare Function WSACancelAsyncRequest Lib Winsock.dll (ByVal hAsyncTaskHandle As Integer) As Integer本函数用来请求Windows Sockets DLL为窗口句柄发一条消息无论它何时检测到由lEvent参数指明的网络事件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如果收到的数据不是一条完整的消息,flags参数中就会返回MSG_PARTIAL标志。在MSG_PARTIAL标志被当作flags参数的一部分投递,而且收到的消息又不完整时,调用WSARecvEx,就会立即返回收到的那个数据Public Declare Function WSARecvEx Lib Winsock.dll (ByVal s As Integer, buf As Any, ByVal buflen As Integer, ByVal flags As Integer) As Integer#ElseIf Win32 Then-Windows System FunctionsPublic Declare Function PostMessage Lib user32 Alias PostMessageA (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic Declare Sub MemCopy Lib kernel32 Alias RtlMoveMemory (Dest As Any, Src As Any, ByVal cb&)Public Declare Function lstrlen Lib kernel32 Alias lstrlenA (ByVal lpString As Any) As Long-async notification constantsPublic Const SOL_SOCKET = &HFFFF&Public Const SO_LINGER = &H80&Public Const FD_READ = &H1&Public Const FD_WRITE = &H2&Public Const FD_OOB = &H4&Public Const FD_ACCEPT = &H8&Public Const FD_CONNECT = &H10&Public Const FD_CLOSE = &H20&-SOCKET FUNCTIONSPublic Declare Function accept Lib wsock32.dll (ByVal s As Long, addr As sockaddr, addrlen As Long) As LongPublic Declare Function bind Lib wsock32.dll (ByVal s As Long, addr As sockaddr, ByVal namelen As Long) As LongPublic Declare Function closesocket Lib wsock32.dll (ByVal s As Long) As LongPublic Declare Function Connect Lib wsock32.dll Alias connect (ByVal s As Long, addr As sockaddr, ByVal namelen As Long) As LongPublic Declare Function ioctlsocket Lib wsock32.dll (ByVal s As Long, ByVal CMD As Long, argp As Long) As LongPublic Declare Function getpeername Lib wsock32.dll (ByVal s As Long, sName As sockaddr, namelen As Long) As LongPublic Declare Function getsockname Lib wsock32.dll (ByVal s As Long, sName As sockaddr, namelen As Long) As LongPublic 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 LongPublic Declare Function htonl Lib wsock32.dll (ByVal hostlong As Long) As LongPublic Declare Function htons Lib wsock32.dll (ByVal hostshort As Long) As IntegerPublic Declare Function inet_addr Lib wsock32.dll (ByVal cp As String) As LongPublic Declare Function inet_ntoa Lib wsock32.dll (ByVal inn As Long) As LongPublic Declare Function listen Lib wsock32.dll (ByVal s As Long, ByVal backlog As Long) As LongPublic Declare Function ntohl Lib wsock32.dll (ByVal netlong As Long) As LongPublic Declare Function ntohs Lib wsock32.dll (ByVal netshort As Long) As IntegerPublic Declare Function recv Lib wsock32.dll (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long) As LongPublic 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 LongPublic 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 LongPublic Declare Function Send Lib wsock32.dll Alias send (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long) As LongPublic 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 LongPublic 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 LongPublic Declare Function ShutDown Lib wsock32.dll Alias shutdown (ByVal s As Long, ByVal how As Long) As LongPublic Declare Function socket Lib wsock32.dll (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long-DATABASE FUNCTIONSPublic Declare Function gethostbyaddr Lib wsock32.dll (addr As Long, ByVal addr_len As Long, ByVal addr_type As Long) As LongPublic Declare Function gethostbyname Lib wsock32.dll (ByVal host_name As String) As LongPublic Declare Function gethostname Lib wsock32.dll (ByVal host_name As String, ByVal namelen As Long) As LongPublic Declare Function getservbyport Lib wsock32.dll (ByVal Port As Long, ByVal proto As String) As LongPublic Declare Function getservbyname Lib wsock32.dll (ByVal serv_name As String, ByVal proto As String) As LongPublic Declare Function getprotobynumber Lib wsock32.dll (ByVal proto As Long) As LongPublic Declare Function getprotobyname Lib wsock32.dll (ByVal proto_name As String) As Long-WINDOWS EXTENSIONSPublic Declare Function WSAStartup Lib wsock32.dll (ByVal wVR As Long, lpWSAD As WSADataType) As LongPublic Declare Function WSACleanup Lib wsock32.dll () As LongPublic Declare Sub WSASetLastError Lib wsock32.dll (ByVal iError As Long)Public Declare Function WSAGetLastError Lib wsock32.dll () As LongPublic Declare Function WSAIsBlocking Lib wsock32.dll () As LongPublic Declare Function WSAUnhookBlockingHook Lib wsock32.dll () As LongPublic Declare Function WSASetBlockingHook Lib wsock32.dll (ByVal lpBlockFunc As Long) As LongPublic Declare Function WSACancelBlockingCall Lib wsock32.dll () As LongPublic 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 LongPublic 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 LongPublic 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 LongPublic 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 LongPublic 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 LongPublic 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 LongPublic Declare Function WSACancelAsyncRequest Lib wsock32.dll (ByVal hAsyncTaskHandle As Long) As LongPublic Declare Function WSAAsyncSelect Lib wsock32.dll (ByVal s As Long, ByVal hwnd As Long, ByVal wMsg As Long, ByVal lEvent As Long) As LongPublic Declare Function WSARecvEx Lib wsock32.dll (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long) As Long#End IfSOME STUFF I ADDEDPublic MySocket%Public SockReadBuffer$Public Const WSA_NoName = UnknownPublic WSAStartedUp As Boolean Flag to keep track of whether winsock WSAStartup wascalledPublic Function WSAGetAsyncBufLen(ByVal lParam As Long) As LongIf (lParam And &HFFFF&) &H7FFF ThenWSAGetAsyncBufLen = (lParam And &HFFFF&) - &H10000ElseWSAGetAsyncBufLen = lParam And &HFFFF&End IfEnd FunctionPublic Function WSAGetSelectEvent(ByVal lParam As Long) As IntegerIf (lParam And &HFFFF&) &H7FFF ThenWSAGetSelectEvent = (lParam And &HFFFF&) - &H10000ElseWSAGetSelectEvent = lParam And &H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论