zoukankan      html  css  js  c++  java
  • 网络编程中常用函数1

    1、atoi()函数

    #include<stdlib.h>
    int atoi(const char *str)

        将字符串转化为整型数

    int val;
    char str[20];  
    strcpy(str, "98993489");
    val = atoi(str);  //此时val就是整型数98993489

    2、inet_addr()、inet_aton()、inet_ntoa()

    #include<arpa/inet.h>
    int inet_aton(const char* strptr, struct in_addr* addrptr);   //若字符串有效返回1,否则返回0
    in_addr_t inet_addr(const char* strptr);   //若字符串有效则返回32位二进制网络字节序的IPv4地址,否则返回INADDR_NONE
    char* inet_ntoa(struct in_addr inaddr);    //返回指向一个点分十进制的数串指针
    int inet_pton(int family, const char *strptr, void* addrptr); //若成功则返回1,若出入的不是有效表达格式返回0,若出错返回-1
    const char* inet_ntop(int family, const void* addrptr, char* strptr, size_t len);//若成功则返回指向结果的指针,否则返回NULL

        inet_aton、inet_addr、inet_pton是将点分十进制数串转换为32位二进制网络字节序的IPv4地址,inet_ntoa、inet_ntop则是将IPv4地址转换为点分十进制的数串。

        INADDR_NONE为32位全1的值,所以inet_addr不能处理“255.255.255.255”这个地址,并且C编译器不同,可能此函数出错的返回值会不同(有的为-1),所以现在不建议使用此函数,而应该使用inet_aton或者支持IPv6的inet_pton函数。

        inet_pton和inet_ntop支持IPv4和IPv6,在参数family中进行指定。

    3、字节序转换函数

    #include<netinet/in.h>
    uint16_t htons(uint16_t  host16bitvalue);
    uint32_t htonl(uint32_t  host32bitvalue);
    uint16_t ntohs(uint16_t  net16bitvalue);
    uint32_t ntohl(uint32_t  net32bitvalue);

        h代表的host(主机字节序),n代表的net(网络字节序),s为short,l为long。

  • 相关阅读:
    操作系统的发展与分类
    kinect1在ros环境下跑orb_slam2
    ubuntu16.04如何设置局域网
    make编译时出现virtual memory exhausted: Cannot allocate memory
    ubuntu下载百度云文件
    ubuntu16.04安装teamviewer
    安装pangolin链接
    运行 roslaunch gazebo_ros empty_world.launch提示有错误,没有gzserver和gzclient
    Ubuntu16.04 安装有道词典
    [Qt插件]-02创建应用程序插件(插件化开发的一种思路)
  • 原文地址:https://www.cnblogs.com/fangyan5218/p/10618258.html
Copyright © 2011-2022 走看看