linux blind函数,Linux网络编程入门
上一節創建socket時,僅指定了協議類型以及服務類型,但是沒有指定具體的socket地址。
bind函數含義如詞義,給上述創建的套接字socket綁定一個socket地址。
比喻如下:我們創建了socket(安裝電話機)以后,需要進行socket命名(應該去中國聯通申請一個電話號碼,并將該號碼和電話機進行綁定)。
bind函數的Linux頭文件以及函數定義如下:
#include
int bind(int sockfd, const stuct sockaddr *my_addr, socklen_t addrlen);
bind函數參數以及返回值如下:
/**
* socket命名
*
* @param sockfd socket文件描述符,上節socket函數返回的值
* @param my_addr socket地址
* @param addrlen socket地址的長度
* @return 函數執行成功返回0,失敗返回-1
*/
int bind(int sockfd, const stuct sockaddr *my_addr, socklen_t addrlen);
結合之前socket地址初始化方法,寫個程序,完成命名socket。
#include
#include // exit
#include
#include // sockaddr_in
#include
int main(int argc, char *argv[])
{
const char *server_ip = "127.0.0.1"; // IP地址字符串
int server_port = 0x1234;
int server_socket;
server_socket = socket(PF_INET, SOCK_STREAM, 0);
if (server_socket == -1) {
perror("socket create error");
exit(1);
}
printf("socket is %d\n", server_socket);
struct sockaddr_in address;
memset(&address, 0, sizeof(address));
address.sin_family = AF_INET;
address.sin_port = htons(server_port);
address.sin_addr.s_addr = inet_addr(server_ip);
if (bind(server_socket, (struct sockaddr*)&address, sizeof(address)) == -1) {
perror("bind error");
exit(1);
}
printf("bind ok\n");
return 0;
}
第13行創建一個socket。
第20~24行初始化一個socket地址,和之前相同。
第26行利用bind函數完成命名socket。
右側打開bind_test.c文件,試添加bind函數,并編譯測試。
總結
以上是生活随笔為你收集整理的linux blind函数,Linux网络编程入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux怎么锁定test用户,用户被锁
- 下一篇: linux 其他常用命令