Statut d'une socket en C++

int0x21 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -  
 marvinrouge -
Hello all,
Voila mon but est de déterminer,quelle est le statut d'une socket seulement en le faisant disons manuellement sans utiliser le composant activeX de Builder 5.En fait j'aimerais savoir comment fait la composant pour savoit le statut de la socket car je suis entrain de créer une classe de socket qui fera la meme chose (en gros) que cette activeX plus quelque trucs en plus.

De plus étant un débutant en C++ j'aimerai savoir comment on fait pour instancier une classe dans un fichier principal main(la classe se situant dans un fichier externe).Que faut t-il insérer,que faut t-il rajouter dans l'include.
Merci de votre contribution.
Bye

4 réponses

marvinrouge
 
***Classe.hpp***

class Toto {
public:
Toto();
Toto(int i);
Toto(const Toto&);
void m();
private:
int n;
};

***Classe.cpp***
#include "Classe.hpp"

Toto::Toto() { // constructeur sans argument
n= 0;
}
Toto::Toto(int i) { // constructeur avec un entier en argument
n = i;
}

Toto::Toto(const Toto& t) { // constructeur DE COPIE
if (&t!=this) // pour ne RIEN faire si on écrit a =a; => GROS DANGERS si champs dynamlqiues dans la classe ...
{
n = t.n;
}
return *this;
}

Toto::m() {

}

***Main.cpp***
#include "Classe.hpp"

void main(void) {
Toto t1; // variable 'automatique' => destruction automatique
Toto* t2 = NULL; // variable 'dynamique' => allocation (new) et destrcution (libération mémoire par delete) à la charge du développeur
t2 = new Toto(); // appel u constrcuteur sans arguments

Toto* t3 = NULL;
t3 = nrw Toto(4);

Toto t4(t1);

Toto* t5 = NULL;
t5 = nrw Toto(t1);

if (t2!=NULL) {
delete t2;
t2 = NULL; // facultatif mais FORTEMENT conseillé
}
if (t3!=NULL) {
delete t3;
t3 = NULL; // facultatif mais FORTEMENT conseillé
}
if (t5!=NULL) {
delete t5;
t5 = NULL; // facultatif mais FORTEMENT conseillé
}
}
0
int0x21 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
Merci bien de ta réponse !
Bye.
0
marvinrouge > int0x21 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
de rien.

marvinrouge
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Si c'est sous Windows, tu peux taper directement dans l'API Winsock.
http://www.vbip.com/winsock-api/resources/msresources.asp
0
int0x21 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
Merci à toi pour ce lien.
J'ai omis de préciser que je développe sous windows XP avec l'EDI C++ Builder 5 mais je suis entrain de développer mes propres classes pour gérer la création de sockets de différents types(TCP,UDP,RAW,ICMP...).Cepandant je ne sais pas si tu as dejà travaillé avec cet EDI ou DELPHI(c'est du pareil au même) mais lorsque tu utilise un composant TTCP (qui est en fait un activeX: mswinsck.ocx),alors ton programme ne marche que sur ta bécane.Si tu l'execute sur une autre box on a droit au message d'erreur:"classe non inscrite".
D'ou ma motivation de réécrire des classes équivalentes en C++.
Cepandant je me demandais un truc:
Comment fait le composant pour savoir le statut d'une socket à un moment donné?(par exemple losqu'in fait TCP1->State;).
Toi par exemple pour savoir si une socket est en écoute ou pas tu ferais comment ? tu tente un listen et si ca marche pas c'est que la socket est en écoute???
Merci beaucoup.
Bye.
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662 > int0x21 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
En fait sous Windows je suis toujours passé par TTCP (Delphi).
Je n'ai fait de la programmation socket pur que sous Unix.

Je n'ai jamais tapé dans l'API Winsock.
Je présume qu'il y a des callbacks pour le changement d'état ?
0
int0x21 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   > sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention  
 
Yo SebSauvage,
Justement c'est tout l'objet de mon interrogation.J'aimerais resoudre ce problème une bonne fois pour toute.Je ne trouve pas ce que je veux sur le net...
Bye
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Tu as regardé dans la doc de l'API Winsock ?
Sinon Google devrait ramener des résultats:

par exemple avec les mots (essayer des combinaisons):
winsock api C++ example tutorial examples tutorials sockets windows
0
int0x21 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
Yo,
Bien sur j'ai plein de tuts la dessus mais aucun ne correspondait précisément à ma requete.
Merci quand même.
Bye
0