54 struct sockaddr_in serv_socket;
58 if ((sfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
65 memset(&serv_socket, 0,
sizeof(serv_socket));
66 serv_socket.sin_family = AF_INET;
68 serv_socket.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
70 serv_socket.sin_addr.s_addr = htonl(INADDR_ANY);
72 serv_socket.sin_port = htons((
unsigned short)port);
73 if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &reuse,
sizeof(reuse)) < 0)
78 if (bind(sfd, (
struct sockaddr *)&serv_socket,
sizeof(serv_socket)) < 0)
91 fcntl(sfd, F_SETFL, fcntl(sfd, F_GETFL, 0) | O_NONBLOCK);
92 sfdev.start(sfd, EV_READ);
96 log(
fmt(
"listening to port %d on fd %d\n", port, sfd));