diff options
-rw-r--r-- | 091socket.cc | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/091socket.cc b/091socket.cc index 53cd10e8..bd973036 100644 --- a/091socket.cc +++ b/091socket.cc @@ -13,25 +13,6 @@ struct socket_t { } }; -:(code) -socket_t* server_socket(int portno) { - socket_t* result = new socket; - result->fd = socket(AF_INET, SOCK_STREAM, 0); - int dummy = 0; - setsockopt(result->fd, SOL_SOCKET, SO_REUSEADDR, &dummy, sizeof(dummy)); - result->addr.sin_family = AF_INET; - result->addr.sin_addr.s_addr = INADDR_ANY; - result->addr.sin_port = htons(portno); - if (bind(result->fd, (struct sockaddr*)&result->addr, sizeof(result->addr)) < 0) { - close(result->fd); - result->fd = -1; - raise << "Failed to bind result socket to port " << portno << ". Something's already using that port.\n" << end(); - return; - } - listen(result->fd, /*queue length*/5); - return result; -} - :(before "End Primitive Recipe Declarations") _SOCKET, :(before "End Primitive Recipe Numbers") @@ -70,6 +51,24 @@ case _SOCKET: { products.at(0).push_back(static_cast<double>(result)); break; } +:(code) +socket_t* server_socket(int portno) { + socket_t* result = new socket_t; + result->fd = socket(AF_INET, SOCK_STREAM, 0); + int dummy = 0; + setsockopt(result->fd, SOL_SOCKET, SO_REUSEADDR, &dummy, sizeof(dummy)); + result->addr.sin_family = AF_INET; + result->addr.sin_addr.s_addr = INADDR_ANY; + result->addr.sin_port = htons(portno); + if (bind(result->fd, (struct sockaddr*)&result->addr, sizeof(result->addr)) < 0) { + close(result->fd); + result->fd = -1; + raise << "Failed to bind result socket to port " << portno << ". Something's already using that port.\n" << end(); + return result; + } + listen(result->fd, /*queue length*/5); + return result; +} :(code) void session_socket(int serverfd, socket_t* session) { |