#include #include #include "socket/socket.hh" #include "utils/errno_exception.hh" #include "socket/address.hh" Socket::Socket(const Address & address) { // Crée le file descriptor du socket socket_ = socket (PF_INET, SOCK_STREAM, 0); if(socket_ < 0) throw errno_exception ("La chaussette n'a pas pu être tricoté", errno); // On bind le socket if(::bind (socket_, address.getSockaddr(), sizeof(*address.getSockaddr())) < 0) throw errno_exception("Impossible d'assigner la chausette", errno); } Socket::Socket(int socket) { socket_ = socket; } void Socket::connect(const Address & address) { if (::connect (socket_, address.getSockaddr(), sizeof(*address.getSockaddr()) < 0)) throw errno_exception("Impossible de mettre la chaussette", errno); } void Socket::listen(int maxQueue) { if(::listen(socket_, maxQueue) < 0 ) throw errno_exception("Impossible d'écouter la mer dans la chaussette", errno); } Socket Socket::accept(Address & address) { sockaddr addr; socklen_t length; int socket = ::accept(socket_, &addr, &length); if (socket < 0) throw errno_exception("Chaussette bloqué à la douane", errno); address = Address(&addr, length); return Socket(socket); }