SocketUDP Class Reference

Implémentation d'une socket UDP
NB: On doit recevoir un message avant de pouvoir en envoyer si on est en mode serveur. More...

#include <SocketUDP.h>

Inheritance diagram for SocketUDP:

Inheritance graph
[legend]
Collaboration diagram for SocketUDP:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 SocketUDP ()
 SocketUDP (unsigned int port) throw (SocketException)
 Construction typique d'une scoket utilisée par un serveur.
 SocketUDP (string ad, unsigned int port) throw (SocketException)
 Construction typique d'une scoket utilisée par un client.
 SocketUDP (const SocketUDP &s)
 Constructeur par recopie.
void operator= (const SocketUDP &s)
 Surcharge de = (Contructeur par recopie).
 ~SocketUDP ()
SocketAccept () throw (SocketException)
 N'est pas utilisé en UDP mais doit la méthode être présente pour pouvoir utiliser des Socket*.
void Envoyer (string msg) const throw (SocketException)
 Envoie un message UDP à l'extrémité de la socket (mAdresseDistante) qui doit donc être connue (dans ce cas mExtremiteDefinie est vrai) Dans le cas d'un serveur il faut donc attendre l'envoi d'un message de l'extrémité Dans le cas d'un client, mAdresseDistante est renseignée dans le constructeur.
string Ecouter () throw (SocketException)
 Attent un message de l'extrémité de la socket et le renvoie
Première méthode à exécuter par un serveur (voir si haut)!!!

Private Attributes

sockaddr_in mAdresseDistante
bool mExtremiteDefinie

Detailed Description

Implémentation d'une socket UDP
NB: On doit recevoir un message avant de pouvoir en envoyer si on est en mode serveur.

..

Definition at line 35 of file SocketUDP.h.


Constructor & Destructor Documentation

SocketUDP::SocketUDP (  )  [inline]

Definition at line 37 of file SocketUDP.h.

References mExtremiteDefinie.

00037 : Socket(){ mExtremiteDefinie=false; }

SocketUDP::SocketUDP ( unsigned int  port  )  throw (SocketException)

Construction typique d'une scoket utilisée par un serveur.


Ecoute toutes les interfaces locales

Parameters:
port Port d'écoute
Returns:

Definition at line 23 of file SocketUDP.cpp.

00023                                                              : Socket(port){
00024         struct sockaddr_in adresse;
00025         mSocket=socket(AF_INET,SOCK_DGRAM,0); //on créé une socket pour le protocol UDP (sans connection) donc on utilise SOCK_DGRAM
00026         if (mSocket<0) throw(SocketException(1));
00027         adresse.sin_family = AF_INET;
00028         adresse.sin_port = htons((u_short)port);
00029         adresse.sin_addr.s_addr = INADDR_ANY;
00030         int retour=bind (mSocket,(struct sockaddr *)&adresse,sizeof(adresse));
00031         if (retour<0) throw(SocketException(2));
00032         mExtremiteDefinie=false;
00033 }

SocketUDP::SocketUDP ( string  ad,
unsigned int  port 
) throw (SocketException)

Construction typique d'une scoket utilisée par un client.


Se connecte sur ad:port

Parameters:
ad Adresse distante
port Port distant
Returns:

Definition at line 35 of file SocketUDP.cpp.

00035                                                                        : Socket(ad,port){
00036         struct hostent *recup;
00037         mSocket=socket(AF_INET,SOCK_DGRAM,0); //on créé une socket pour le protocol UDP (sans connection) donc on utilise SOCK_DGRAM
00038         if (mSocket<0) throw(SocketException(1));
00039         if ((recup = gethostbyname(ad.c_str()))==NULL) throw(SocketException(3));
00040         mAdresseDistante.sin_family = AF_INET;
00041         mAdresseDistante.sin_port = htons((u_short)port);
00042         memcpy((char *)&mAdresseDistante.sin_addr, (char *)recup->h_addr, recup->h_length);
00043         mExtremiteDefinie=true;
00044 }

SocketUDP::SocketUDP ( const SocketUDP s  ) 

Constructeur par recopie.

Parameters:
s Objet de base
Returns:

Definition at line 46 of file SocketUDP.cpp.

References mAdresseDistante, mExtremiteDefinie, and Socket::mSocket.

SocketUDP::~SocketUDP (  ) 

Definition at line 58 of file SocketUDP.cpp.

References Socket::mSocket.

00058                      {
00059         close(mSocket);
00060 }


Member Function Documentation

void SocketUDP::operator= ( const SocketUDP s  ) 

Surcharge de = (Contructeur par recopie).

Parameters:
s Objet de base

Definition at line 52 of file SocketUDP.cpp.

References mAdresseDistante, mExtremiteDefinie, and Socket::mSocket.

Socket* SocketUDP::Accept (  )  throw (SocketException) [inline, virtual]

N'est pas utilisé en UDP mais doit la méthode être présente pour pouvoir utiliser des Socket*.

Returns:

Implements Socket.

Definition at line 74 of file SocketUDP.h.

00074 {};

void SocketUDP::Envoyer ( string  msg  )  const throw (SocketException) [virtual]

Envoie un message UDP à l'extrémité de la socket (mAdresseDistante) qui doit donc être connue (dans ce cas mExtremiteDefinie est vrai) Dans le cas d'un serveur il faut donc attendre l'envoi d'un message de l'extrémité Dans le cas d'un client, mAdresseDistante est renseignée dans le constructeur.

Parameters:
msg 

Implements Socket.

Definition at line 62 of file SocketUDP.cpp.

00062                                                               {
00063         if(mExtremiteDefinie){
00064                 int s=sendto(mSocket,mCryptage->Crypter(msg).c_str(),msg.length(),0,(struct sockaddr*)&mAdresseDistante,sizeof(mAdresseDistante));
00065                 if (s==-1) throw(SocketException(6));
00066         } else throw(SocketException(8));
00067 }

string SocketUDP::Ecouter (  )  throw (SocketException) [virtual]

Attent un message de l'extrémité de la socket et le renvoie
Première méthode à exécuter par un serveur (voir si haut)!!!

Returns:
Le message reçu

Implements Socket.

Definition at line 69 of file SocketUDP.cpp.

References Cryptage::Decrypter(), mAdresseDistante, Socket::mCryptage, mExtremiteDefinie, and Socket::mSocket.

00069                                                 {
00070         char buffer[BUFSIZ];
00071         socklen_t taille=sizeof(mAdresseDistante); // Passe par une variable afin d'utiliser un pointeur
00072         int s=recvfrom(mSocket,buffer,BUFSIZ,0,(struct sockaddr*)&mAdresseDistante,&taille);
00073         if(s==-1) throw(SocketException(7)); else {
00074                 buffer[s]=0; // Permet de fermer le tableau après le contenu des data, car la fonction recvfrom ne le fait pas
00075                 mExtremiteDefinie=true;
00076                 return mCryptage->Decrypter(buffer);
00077         }
00078 }

Here is the call graph for this function:


Member Data Documentation

struct sockaddr_in SocketUDP::mAdresseDistante [private]

Definition at line 91 of file SocketUDP.h.

Referenced by Ecouter(), operator=(), and SocketUDP().

bool SocketUDP::mExtremiteDefinie [private]

Definition at line 92 of file SocketUDP.h.

Referenced by Ecouter(), operator=(), and SocketUDP().


The documentation for this class was generated from the following files:
Generated on Wed Jan 2 14:02:14 2008 for Pacman by  doxygen 1.5.1