透析ICMP协议(二): Windows Socket 简介 =============================== 这篇文章出自bugfree/CSDN 平台: VC6 Windows XP 简介: ------- Windows 的Socket函数有许多, 我没有做详细介绍, 这里的函数都是简要说明其用途, 详细用法请参考MSDN. 这里的主要目的是为了后面的三个应用服务. 函数说明: --------- WSAStartup函数 初始化Winsock [声明] int WSAStarup(WORD wVersionRequested,LPWSADATA lpWSAData); [参数] wVersionRequested - 要求使用Winsock的最低版本号 lpWSAData - Winsock的详细资料 [返回值] 当函数成功调用时返回0 失败时返回非0的值 --- socket函数 用于生成socket(soket Descriptor) [声明] SOCKET socket(int af,int type,int protocol); [参数] af - 地址家族(通常使用:AF_INET) type - socket的种类 SOCK_STREAM : 用于TCP协议 SOCK_DGRAM : 用于UDP协议 protocol - 所使用的协议 [返回值] 当函数成功调用时返回一个新的SOCKET(Socket Descriptor) 失败时返回INVALID_SOCKET. --- inet_addr函数 地址转换, 把"A.B.C.D"的IP地址转换为32位长整数 [声明] unsigned long inet_addr ( const char FAR *cp ); [参数] cp - 指向IP地址字符串的指针 [返回值] 当函数成功调用时返回用32位整数表示的IP地址 失败时返回INADDR_NONE. --- gethostbyname函数 从主机名获取主机信息. [声明] struct hostent FAR * gethostbyname ( const char FAR *name ); [参数] name - 指向主机名字符串的指针 [返回值] 当函数成功调用时返回主机信息 失败时返回NULL(空值) --- recv函数 利用Socket进行接受数据. [声明] int recv ( SOCKET s , char FAR *buf , int len , int flags ); [参数] s - 指向用Socket函数生成的Socket Descriptor buf - 接受数据的缓冲区(数组)的指针 len - 缓冲区的大小 flag - 调用方式(MSG_PEEK 或 MSG_OOB) [返回值] 成功时返回收到的字节数. 如果连接被中断则返回0 失败时返回 SOCKET_ERROR --- sendto函数 发送数据. [声明] int sendto ( SOCKET s , const char FAR *buf , int len , int flags , const struct sockaddr FAR *to , int token ); [参数] s - 指向用Socket函数生成的Socket Descriptor buf - 接受数据的缓冲区(数组)的指针 len - 缓冲区的大小 flag - 调用方式(MSG_DONTROUTE , MSG_OOB) to - 指向发送方SOCKET地址的指针 token - 发送方SOCKET地址的大小 [返回值] 成功时返回已经发送的字节数. 失败时返回SOCKET_ERROR |