#include "enchufe.h" #include // read, close and other POSIX functions #include // all the socket functions #include // sockaddr_in #include // inet_pton Enchufe enchufa(IPv4 ip, Port port) { return aplasta(nuevo(), receptaculo(ip, port)); } void conecta(Enchufe enchufe) { try (connect(enchufe.fd, (const struct sockaddr*)&enchufe.addr, enchufe.addrlen)); } void amarra(Enchufe enchufe) { try (bind(enchufe.fd, (struct sockaddr*)&enchufe.addr, enchufe.addrlen)); } void escucha(Enchufe enchufe, size_t len) { listen(enchufe.fd, len); } Enchufe acepta(Enchufe enchufe) { FD fd = accept(enchufe.fd, (struct sockaddr*)&enchufe.addr, &enchufe.addrlen); try (fd); return (Enchufe){ .fd = fd, .addr = enchufe.addr, .addrlen = enchufe.addrlen, }; } void zumba(Enchufe enchufe, Buffer buf) { try (write(enchufe.fd, buf.buf, buf.len)); } size_t recibe(Enchufe enchufe, Buffer buf) { int bytes_read = read(enchufe.fd, buf.buf, buf.len); try (bytes_read); return bytes_read; } void desenchufa(Enchufe enchufe) { close(enchufe.fd); } Buffer atob(const char* str) { return (Buffer){ .buf = (Byte*)str, .len = strlen(str), }; }