¡Saludos a todos!
He hecho una pequeña abstracción para utilizar sockets en Windows y Linux indistintamente.
La clase es bastante sencilla y basta con hacer un include de ella.
El constructor inicializa la API Winsock2 2.2 en el caso de Windows y en el de Linux, incluye las cabeceras necesarias. También nos da un socket listo para trabajar con él.
El destructor cierra el socket y libera los recursos.
Métodos públicos:
portable_socket(void);
int pbind (const struct sockaddr *addr, socklen_t addrlen);
int plisten(int backlog);
portable_socket* paccept(struct sockaddr *addr, socklen_t *addrlen);
int pconnect(const struct sockaddr *addr, socklen_t addrlen);
int psend(const void *buf, size_t len, int flags);
int precv(void *buf, size_t len, int flags);
void set_fd(SOCKET s);
SOCKET get_fd();
int get_last_error();
~portable_socket(void);
La 'p' de delante de cada nombre indica "portable", y no he metido funciones extra como sendto y recvfrom pero es bastante fácil añadirlas :)
Espero que sea útil :)
Enlace con el código: http://paste2.org/p/1280475 (Están los dos ficheros en el mismo paste)
2 comentarios:
Hola. me tope con tu pagina. Aun posees el codigo disponible?
Hola buenas, lo tengo sip. No pensé que en la web esa de paste2.org caducaran los enlaces.
He subido los ficheros a mi server:
http://betovserver.no-ip.org/portable_socket.cpp
http://betovserver.no-ip.org/portable_socket.h
Si tienes dudas de como se usan, preguntame :)
Publicar un comentario
Se respetuoso y escribe en español correcto please!!