#include <SocketUDP.h>
Inheritance diagram for SocketUDP:
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 () | |
Socket * | Accept () 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 |
..
Definition at line 35 of file SocketUDP.h.
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
port | Port d'écoute |
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
ad | Adresse distante | |
port | Port distant |
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.
s | Objet de base |
Definition at line 46 of file SocketUDP.cpp.
References mAdresseDistante, mExtremiteDefinie, and Socket::mSocket.
00046 { 00047 mSocket=s.mSocket; 00048 mAdresseDistante=s.mAdresseDistante; 00049 mExtremiteDefinie=s.mExtremiteDefinie; 00050 }
SocketUDP::~SocketUDP | ( | ) |
Definition at line 58 of file SocketUDP.cpp.
References Socket::mSocket.
00058 { 00059 close(mSocket); 00060 }
void SocketUDP::operator= | ( | const SocketUDP & | s | ) |
Surcharge de = (Contructeur par recopie).
s | Objet de base |
Definition at line 52 of file SocketUDP.cpp.
References mAdresseDistante, mExtremiteDefinie, and Socket::mSocket.
00052 { 00053 mSocket=s.mSocket; 00054 mAdresseDistante=s.mAdresseDistante; 00055 mExtremiteDefinie=s.mExtremiteDefinie; 00056 }
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*.
Implements Socket.
Definition at line 74 of file SocketUDP.h.
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.
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)!!!
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:
struct sockaddr_in SocketUDP::mAdresseDistante [private] |
bool SocketUDP::mExtremiteDefinie [private] |