make_internet_address(hostname, portnum, &m_saddr); if((bind(sock_id, (struct sockaddr *)&m_saddr, sizeof(m_saddr))) != 0) return -1; return sock_id; }
时间: 2024-04-03 20:37:12 浏览: 95
oracle service_name参数
这是一个创建套接字并绑定地址的函数。函数名为 `make_server_socket`,接收主机名 `hostname` 和端口号 `portnum` 作为参数,返回一个套接字文件描述符。
1. `make_internet_address(hostname, portnum, &m_saddr)`:该函数用于创建一个 `sockaddr_in` 类型的地址,其中 `hostname` 是主机名,`portnum` 是端口号,`&m_saddr` 是指向该地址结构体的指针。该函数会将 `m_saddr` 的成员 `sin_family` 设置为 `AF_INET`(表示 IPv4 地址族),成员 `sin_port` 设置为网络字节序的端口号,成员 `sin_addr.s_addr` 设置为网络字节序的 IPv4 地址。
2. `bind(sock_id, (struct sockaddr *)&m_saddr, sizeof(m_saddr))`:该函数用于将套接字 `sock_id` 绑定到指定的地址 `m_saddr` 上。第二个参数是一个指向 `sockaddr` 结构体的指针,因此需要将 `m_saddr` 转换为 `sockaddr` 类型的指针,使用强制类型转换即可。第三个参数表示地址结构体的大小。
3. 如果 `bind` 函数执行成功,返回套接字文件描述符 `sock_id`,否则返回 -1 表示绑定失败。
阅读全文