l3.xsock/lib/xsock.h

111 lines
2.4 KiB
C
Raw Normal View History

2006-01-10 10:42:33 +00:00
/*!
* \file XSock.hpp blabla
*
*/
#ifndef _XIONFS_XSOCK
#define _XIONFS_XSOCK 1
2006-01-10 12:16:59 +00:00
#include "xsock_errors.h"
#include "xsock_global.h"
#include "xsock_iface.h"
2006-01-10 10:42:33 +00:00
using namespace std;
using namespace XSockExcept;
namespace XSock {
/*
* XSock permet de g<EFBFBD>rer une connexion TCP ou UDP.
*/
class XSock {
private:
protocol _proto;
xsock_role _role;
/* descripteur de la socket principale */
int _sockFd;
/* taille de la table des descripteurs */
int _sockSetDSize;
/* ensemble de sockets ouverts */
fd_set _openSockFdSet;
/* ensemble de sockets ouverts qui attendent d'<27>tre lus */
fd_set _openSockFdSet_R;
/* fixer la taille de la queue d'attente de connexions*/
int _backlog;
/* membres <20> ajouter pour les service par dessus udp */
// num<75>ros de s<>quence entrante
u_int _secnumrecv;
// num<75>ros de s<>quence sortante
u_int _secnumsend;
/* structure d'addresse du client */
struct sockaddr_in _client;
socklen_t _client_length;
/* structure d'addresse du serveur */
struct sockaddr_in _server;
socklen_t _server_length;
void launch_tcp_client();
void launch_udp_client();
void launch_udp_reliable_client();
void launch_tcp_server();
void launch_udp_server();
void launch_udp_reliable_server();
XSock accept_udp();
XSock accept_udp_reliable();
XSock accept_tcp();
int sockFdTab_newPlace();
int sockFdTab_getPlace(int);
unsigned short XSock::getAvailablePortPub();
void backlog(int );
ssize_t send_udp(const void *, ssize_t );
ssize_t send_udp_reliable(const void *, ssize_t );
ssize_t send_tcp(const void *, ssize_t );
ssize_t recv_udp(void *, ssize_t );
ssize_t recv_udp_reliable(void *, ssize_t );
ssize_t recv_tcp(void *, ssize_t );
void close_tcp();
void close_udp();
void close_udp_reliable();
public:
XSock(xsock_role, protocol);
void port(u_short ); // client
void ip(int );
void dns(string );
XSock accept();
void launch();
void close();
ssize_t send(const void *, ssize_t );
ssize_t recv(void *, ssize_t );
char * getClientAddress();
char * getServerAddress();
u_short get_local_port();
u_short get_server_port();
string get_server_dns();
string get_server_ip();
string get_client_dns();
string get_client_ip();
void dump_info();
}; // end class
} // end namespace
#endif