|
|
|
@ -89,20 +89,15 @@ int rpc_server_init(rpc_server_t* server, const char* host, uint16_t port, int b |
|
|
|
return RPC_NET_ERROR; |
|
|
|
} |
|
|
|
|
|
|
|
// 设置服务器地址结构
|
|
|
|
memset(&server->address, 0, sizeof(server->address)); |
|
|
|
server->address.sin_family = AF_INET; |
|
|
|
server->address.sin_addr.s_addr = inet_addr(host); |
|
|
|
server->address.sin_port = htons(port); |
|
|
|
// 设置服务器地址结构(使用局部变量,避免访问server->address)
|
|
|
|
struct sockaddr_in addr; |
|
|
|
memset(&addr, 0, sizeof(addr)); |
|
|
|
addr.sin_family = AF_INET; |
|
|
|
addr.sin_addr.s_addr = inet_addr(host); |
|
|
|
addr.sin_port = htons(port); |
|
|
|
|
|
|
|
// 绑定地址到套接字
|
|
|
|
const struct sockaddr* addr_ptr = (const struct sockaddr*)&server->address; |
|
|
|
int addr_len = sizeof(server->address); |
|
|
|
#ifdef _WIN32 |
|
|
|
if (bind(server->server_fd, addr_ptr, addr_len) != 0) { |
|
|
|
#else |
|
|
|
if (bind(server->server_fd, addr_ptr, addr_len) != 0) { |
|
|
|
#endif |
|
|
|
if (bind(server->server_fd, (const struct sockaddr*)&addr, sizeof(addr)) != 0) { |
|
|
|
PRINT_ERROR("bind failed"); |
|
|
|
CLOSE_SOCKET(server->server_fd); |
|
|
|
return RPC_NET_ERROR; |
|
|
|
|