| 24 | namespace phxsql { |
| 25 | |
| 26 | int NetIO::Bind(const char *ip, const uint32_t &port) { |
| 27 | int server_sockfd = socket(AF_INET, SOCK_STREAM, 0); |
| 28 | |
| 29 | struct sockaddr_in server_sockaddr; |
| 30 | server_sockaddr.sin_family = AF_INET; |
| 31 | server_sockaddr.sin_port = htons(port); |
| 32 | server_sockaddr.sin_addr.s_addr = inet_addr(ip); |
| 33 | |
| 34 | int enable = 1; |
| 35 | setsockopt(server_sockfd, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int)); |
| 36 | |
| 37 | if (bind(server_sockfd, (struct sockaddr *) &server_sockaddr, sizeof(server_sockaddr)) == -1) { |
| 38 | ColorLogError("bind fail, ip %s port %d", ip, port); |
| 39 | return SOCKET_FAIL; |
| 40 | } |
| 41 | |
| 42 | if (listen(server_sockfd, 20) == -1) { |
| 43 | ColorLogError("listen fail"); |
| 44 | return SOCKET_FAIL; |
| 45 | } |
| 46 | ColorLogInfo("bind ip %s port %d ok", ip, port); |
| 47 | return server_sockfd; |
| 48 | } |
| 49 | |
| 50 | int NetIO::SetSendTimeOut(const int &fd) { |
| 51 | struct timeval timeout = { 1, 0 }; |
nothing calls this directly
no test coverage detected