| 179 | } |
| 180 | |
| 181 | void Socket::Bind(unsigned int port, const char *addr) |
| 182 | { |
| 183 | sockaddr_in sa; |
| 184 | memset(&sa, 0, sizeof(sa)); |
| 185 | sa.sin_family = AF_INET; |
| 186 | |
| 187 | if (addr == NULL) |
| 188 | sa.sin_addr.s_addr = htonl(INADDR_ANY); |
| 189 | else |
| 190 | { |
| 191 | // unsigned long result = inet_addr(addr); |
| 192 | unsigned long result; |
| 193 | if (inet_pton(AF_INET, addr, &result) < 1 || result == INADDR_NONE) |
| 194 | { |
| 195 | SetLastError(SOCKET_EINVAL); |
| 196 | CheckAndHandleError_int("inet_addr", SOCKET_ERROR); |
| 197 | } |
| 198 | sa.sin_addr.s_addr = result; |
| 199 | } |
| 200 | |
| 201 | sa.sin_port = htons((unsigned short)port); |
| 202 | |
| 203 | Bind((sockaddr *)&sa, sizeof(sa)); |
| 204 | } |
| 205 | |
| 206 | void Socket::Bind(const sockaddr *psa, socklen_t saLen) |
| 207 | { |