最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python bind是什么意思

    正文概述    2020-07-18   256

    python bind是什么意思

    bind()函数介绍

    在建立套接字文件描述符成功后,需要对套接字进行地址和端口的绑定,才能进行数据的接收和发送操作。

    函数原型

    bind()函数将长度为addlen的struct sockadd类型的参数my_addr与sockfd绑定在一起,将sockfd绑定到某个端口上,如果使用connect()函数则没有绑定的必要。绑定的函数原型如下:

    #include<sys/types.h>
    #include<sys/socket.h>
    int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);

    bind()函数有3个参数。

    ·第1个参数sockfd是用socket()函数创建的文件描述符。

    ·第2个参数my_addr是指向一个结构为sockaddr参数的指针,sockaddr中包含了地址、端口和IP地址的信息。在进行地址绑定的时候,需要弦将地址结构中的IP地址、端口、类型等结构struct sockaddr中的域进行设置之后才能进行绑定,这样进行绑定后才能将套接字文件描述符与地址等接合在一起。

    ·第3个参数addrlen是my_addr结构的长度,可以设置成sizeof(struct sockaddr)。使用sizeof(struct sockaddr)来设置套接字的类型和其对已ing的结构。

    bind()函数的返回值为0时表示绑定成功,-1表示绑定失败,errno的错误值如表1所示。

    表1 bind的errno值及含义

    python bind是什么意思

    示例1

    先建立一个UNIX族的流类型套接字,然后将套接字地址和套接字文件描述符进行绑定。

    #define MY_SOCK_PATH "/somepath"
    int main(int argc, char *argv[])
    {
        int sfd;
        struct sockaddr_un addr; //AF_UNIX对应的结构
        sfd = socket(AF_UNIX, SOCK_STREAM, 0); //初始化一个AF_UNIX族的流类型socket
        if (sfd == -1) { //检查是否正常初始化socket
            perror("socket");
            exit(EXIT_FAILURE);
        }
        memset(&addr, 0, sizeof(struct sockaddr_un));//将变量addr置0
        addr.sun_family = AF_UNIX; //协议族为AF_UNIX
        strncpy(addr.sun_path, MY_SOCK_PATH, sizeof(addr.sun_path)-1); //复制路径到地址结构
        perror("bind");
        exit(EXIT_FAILURE);
        }
        ... //数据接收发送及处理过程
        close(sfd); //关闭套接字文件描述符
    }

    示例2

    使用结构struct sockaddr_in绑定一个AF_INET族的流协议,先将结构struct sockaddr_in的sin_family设置为AF_INET,然后设置端口,接着设置一个IP地址,最后进行绑定。

    #define MYPORT 3490
    int main(int argc, char *argv[])
    {
        int sockfd; //套接字文件描述符变量
        struct sockaddr_in my_addr; //以太网套接字地址结构
        sockfd = socket(AF_INET, SOCK_STREAM, 0); //初始化socket
        if (sockfd == -1) {
        peeror("socket"); //检查是否正常初始化socket
        exit(EXIT_FAILURE);
        }
        my_addr.sin_family = AF_INET; //地址结构的协议族
        my_addr.sin_port = htons(MYPORT); //地址结构的端口地址,网络字节序
        my_addr.sin_addr.s_addr = inet_addr("192.168.1.150"); //IP,将字符串的IP地址转化为网络字节序
        bzero(&(my_addr.sin_zero), 8); //将my_addr.sin_zero置为0
        if (bind(sockfd, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)) == -1) { // 判断是否绑定成功
        perror("bind");
        exit(EXIT_FAILURE);
        }
        ... //接收和发送数据,进行数据处理
        close(sockfd); //关闭套接字文件描述符
    }

    众多python培训视频,尽在python学习网,欢迎在线学习!


    起源地下载网 » python bind是什么意思

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元