创建一个udp socket后,此时socket中并没有任何地址相关的信息,服务器端需要将本地Ip地址及端口号bind到socket上。
应用层会调下如下socket API:
bind(fd, (struct sockaddr)&addr, addr_len)
fd:socket所关联的文件描述符
addr:本地地址及端口号
addr_len:地址长度
内核中的执行流程:
bind(fd, (struct sockaddr)&addr, addr_len)
__sys_bind(fd, addr, addrlen)
1.通过fd找到相关联的socket
struct socket *sock;
sock = sockfd_lookup_light(fd, &err, &fput_needed)
2.调用socket的inet层bind接口
err = sock->ops