socket基本函数 (三)

 9. 地址转换函数

    在socketaddr_in结构中,sin_addr用来指定主机地址.它的类型是in_addr结构.

    in_addr结构定义为:

    struct in_addr{

          union{

                struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;

                struct {u_short s_w1,s_w2;} S_un_w;

                 u_long S_addr;

           }S_un;

     };

     unsigned long inet_addr(const char FAR* cp); 将点分十进制格式的IP地址转换为in_addr结构的地址.

     char FAR* inet_ntoa(struct in_addr in); 将in_addr结构的地址转换为点分十进制格式的IP地址.

    

10. 字节序转换函数

    网络中存在多种类型计算机,不同计算机表示数据的字节序不同,网络协议中的数据采用统一的网络字节序.

    unsigned long htonl(unsigned long hostlong); 将无符号长整型数从主机字节序转换为网络字节序.

    unsigned long ntohl(unsigned long netlong);  将无符号长整型数从网络字节序转换为主机字节序.

    unsigned short htons(unsigned short hostshort);  将无符号短整型数从主机字节序转换为网络字节序.

    unsigned short ntohs(unsigned short netshort); 将无符号短整型数从网络字节序转换为主机字节序.

 

11. 主机信息获取函数

      在SOCKET编程中,使用主机名和IP地址等,可以通过hostent结构来获取相关信息.

      hostent结构的定义:

      struct hostent{

          char FAR* h_name;

          char FAR* h_aliases;

          short h_addrtype;

          short h_length;

          char FAR* h_addr_list;

      };

     h_name是主机名;

     h_aliases是主机别名;

     h_addrtype用来表示主机的地址类型;

     h_length用开表示主机地址的长度;

     h_addr_list用来表示主机所有地址;

     int gethostname(char FAR* name,int namelen); 获取主机名.

     struct hostent FAR* gethostbyname(const char FAR* name); 获取主机地址

 

12. 套接字处理函数

      int ioctlsocket(SOCKET s,long cmd,u_long FAR* argp); 控制套接字的操作模式.

      int getsockopt(SOCKET s,int level,int optname,char FAR* optval,int FAR* optlen); 获取套接字的选项

      int setsockopt(SOCKET s,int level,int optname,const char FAR* optval,int optlen); 设置套接字选项

 

13. GetLastError()函数

     获取错误类型,如果某个Socket函数返回SOCKET_ERROR,说明该函数在处理过程中出现错误,通过调用GetLastError()函数获取该错误对应的错误类型码,从而判断错误类型并决定如何处理.

posted on 2012-02-27 01:02  kangbry  阅读(208)  评论(0编辑  收藏  举报

导航