您的位置:首页 > 理论基础 > 计算机网络

TCP/IP编程之bind函数详解

2016-07-09 21:32 1576 查看
函数原型:

BIND(2)                    Linux Programmer's Manual                   BIND(2)

NAME
bind - bind a name to a socket

SYNOPSIS
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>

int bind(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);


参数说明:


sockfd是由socket函数返回的套接字描述符,第二个、第三个参数分别是一个指向套接字地址结构的指针和结构的大小。

返回值:

返回:若成功则为0,若出错则为-1(从bind函数返回的一个常见错误是EADDRINUSE "Address already in use",地址已经在使用)

bind函数把一个本地协议地址赋予一个套接字。对于TCP,调用bind函数可以指定一个端口号,或指定一个IP地址,也可以两者都指定,还可以都不指定。

IPv4的TCP伪代码如下:

int sockfd = socket(AF_INET, SOCK_STREAM, 0); //TCP

short port = 9527; //端口
struct sockaddr_in servaddr;
servaddr.sin_family = AF_INET; //IPv4
servaddr.sin_addr.s_addr = htonl(INADDR_ANY); //表示由内核去选择IP地址
servaddr.sin_port = htons(port);

int res = bind(sockfd, (sockaddr *)&servaddr, sizeof(servaddr));
if (0 == res)
printf("server bind success, 0.0.0.0:%d\n", port);
else {
perror("bind fail");
}


参考:《unix网络编程》·卷1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  socket linux 网络 tcp bind