日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:pythonbind是什么意思

成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),愛輝網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:愛輝等地區(qū)。愛輝做網(wǎng)站價格咨詢:13518219792

bind()函數(shù)介紹

在建立套接字文件描述符成功后,需要對套接字進(jìn)行地址和端口的綁定,才能進(jìn)行數(shù)據(jù)的接收和發(fā)送操作。

函數(shù)原型

bind()函數(shù)將長度為addlen的struct sockadd類型的參數(shù)my_addr與sockfd綁定在一起,將sockfd綁定到某個端口上,如果使用connect()函數(shù)則沒有綁定的必要。綁定的函數(shù)原型如下:

#include
#include
int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);

bind()函數(shù)有3個參數(shù)。

·第1個參數(shù)sockfd是用socket()函數(shù)創(chuàng)建的文件描述符。

·第2個參數(shù)my_addr是指向一個結(jié)構(gòu)為sockaddr參數(shù)的指針,sockaddr中包含了地址、端口和IP地址的信息。在進(jìn)行地址綁定的時候,需要弦將地址結(jié)構(gòu)中的IP地址、端口、類型等結(jié)構(gòu)struct sockaddr中的域進(jìn)行設(shè)置之后才能進(jìn)行綁定,這樣進(jìn)行綁定后才能將套接字文件描述符與地址等接合在一起。

·第3個參數(shù)addrlen是my_addr結(jié)構(gòu)的長度,可以設(shè)置成sizeof(struct sockaddr)。使用sizeof(struct sockaddr)來設(shè)置套接字的類型和其對已ing的結(jié)構(gòu)。

bind()函數(shù)的返回值為0時表示綁定成功,-1表示綁定失敗,errno的錯誤值如表1所示。

表1 bind的errno值及含義

示例1

先建立一個UNIX族的流類型套接字,然后將套接字地址和套接字文件描述符進(jìn)行綁定。

#define MY_SOCK_PATH "/somepath"
int main(int argc, char *argv[])
{
    int sfd;
    struct sockaddr_un addr; //AF_UNIX對應(yīng)的結(jié)構(gòu)
    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; //協(xié)議族為AF_UNIX
    strncpy(addr.sun_path, MY_SOCK_PATH, sizeof(addr.sun_path)-1); //復(fù)制路徑到地址結(jié)構(gòu)
    perror("bind");
    exit(EXIT_FAILURE);
    }
    ... //數(shù)據(jù)接收發(fā)送及處理過程
    close(sfd); //關(guān)閉套接字文件描述符
}

示例2

使用結(jié)構(gòu)struct sockaddr_in綁定一個AF_INET族的流協(xié)議,先將結(jié)構(gòu)struct sockaddr_in的sin_family設(shè)置為AF_INET,然后設(shè)置端口,接著設(shè)置一個IP地址,最后進(jìn)行綁定。

#define MYPORT 3490
int main(int argc, char *argv[])
{
    int sockfd; //套接字文件描述符變量
    struct sockaddr_in my_addr; //以太網(wǎng)套接字地址結(jié)構(gòu)
    sockfd = socket(AF_INET, SOCK_STREAM, 0); //初始化socket
    if (sockfd == -1) {
    peeror("socket"); //檢查是否正常初始化socket
    exit(EXIT_FAILURE);
    }
    my_addr.sin_family = AF_INET; //地址結(jié)構(gòu)的協(xié)議族
    my_addr.sin_port = htons(MYPORT); //地址結(jié)構(gòu)的端口地址,網(wǎng)絡(luò)字節(jié)序
    my_addr.sin_addr.s_addr = inet_addr("192.168.1.150"); //IP,將字符串的IP地址轉(zhuǎn)化為網(wǎng)絡(luò)字節(jié)序
    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);
    }
    ... //接收和發(fā)送數(shù)據(jù),進(jìn)行數(shù)據(jù)處理
    close(sockfd); //關(guān)閉套接字文件描述符
}

眾多python培訓(xùn)視頻,盡在python學(xué)習(xí)網(wǎng),歡迎在線學(xué)習(xí)!


網(wǎng)站欄目:創(chuàng)新互聯(lián)Python教程:pythonbind是什么意思
本文地址:http://www.dlmjj.cn/article/ccejssh.html