bind函数
1.什么是bind函数?功能是什么?
在网络通信中,服务器程序所监听的网络地址和端口号通常是固定不变的,就比如百度的网络地址是:http://www.baidu.com。当容户端需要连接服务器时,需要使用 bind
函数将套接字(socket)绑定到该服务器的IP地址和端口号上,使得套接字这个用于网络通讯的文件描述符可以监听服务器的地址和端口号。
要使用bind函数,需要包含头文件:
#include <sys/types. h>
2.定义
int bind (int sockfd, const struct sockaddr *addr, socklen_t addrlen);
其中sockfd代表套接字的文件描述符,即socket函数的返回值,如果这里大家觉得不理解,可以看我的上一篇文章;const struct sockaddr *myaddr是一结构体,包含需要绑定的IP地址和端口号,这个结构体在https://blog.csdn.net/shnhe/article/details/135171030?spm=1001.2014.3001.5501有详细介绍;addrlen是addrd的地址长度。此函数若成功返回0,失败则返回-1
3.举例
#include <sys/types. h)
#include <sys/socket. h>
int main(void){
struct sockaddr_in servaddr;
int sock=socket(AF_INET,SOCK_STREAM,0); #获取套接字的文件描述符,这里不懂可以看我的上一篇文章
servaddr.sin_family = AF_INET; #使用IPV4协议
servaddr.sin_addr.s_addr = htonl (INADDR_ANY); #定义IP地址,这里不明白请看网络编程基础(3)
servaddr.sin_port = htons (666); #定义端口号
bind(sock,(struct sockaddr *)&servaddr, sizeof(servaddr)); #使用bind函数将套接字绑定到服务器的IP地址和端口号上,(struct sockaddr *)&servaddr这个强制转换不懂得可以看网络编程基础(3)
}
上面展示的代码就是bind函数的一个简单使用过程,每一个代码段代表的意思都已注释,若有哪里表达的不清楚,欢迎大家提出,最后感谢的观看!