Sockets

Signaler
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011
-
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
-
Bien le bonjour amis programmeurzz,


J'etudie actuellement l'informatique et pour les besoins de mes
etudes(et surtout pour mon plaisir) j'ai commencé à étudier la socket
en C++(sous C++builder6)...bon bon d'accord ma vie est ininterressant
^^.


J'ai essayer de faire un chti programme tout bete : un client avec un
emplacement de texte et un bouton, et un serveur pareil, le client
envoyant le message "bonjour" au serveur qui doit normalement
l'afficher dans son emplacement texte.


Apres quelques heures, j'ai enfin reussi a faire tourner le programme
sans aucun message d'erreur mais le serveur n'affiche pas le message
(je ne suis meme pas sur qu'il le recoivent.


Pourriez vous m'aidez svp?


Le code du client :


#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}
//tout ca est ajouter par BuilderC++


void __fastcall TForm1::Button1Click(TObject *Sender)

{

Client->Socket->LocalHost;

Client->Open();

Client->Active=true ;


if (Client->Socket->Connected == true)

{

Edit1->Text="conect";

Client->Socket->SendText("bonjour");

}

else

{

Edit1->Text="non connect";

}


}


et le code du serveur :


#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}
//Ajouter par BuilderC++


void __fastcall TForm1::Button1Click(TObject *Sender)

{

Server->Active=true;


}


void __fastcall TForm1::ServerClientWrite(TObject *Sender,

TCustomWinSocket *Socket)

{

Edit1->Text=Server->Socket->ReceiveText();

}


Voila merci d'avance

3 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Salut,
Premiere chose a savoir. Dans une application client/serveur, deux paramètres sont obligatoires : le numéro de port sur lequel tu vas comuniquer, et l'IP du serveur d'écoute.
Dans ton exemple tu ne spécifie a aucun moment le port d'écoute pour le serveur.

Deuxieme chose, je ne connais pas la VCL mais je pense qu'il est inutile de faire un Open puis un Active (l'Active doit surement appeller l'Open)... Bah oui Borland aime bien faire dans la dentelles.

Sinon si je peux te donner un conseil, c'est de laisser tonmber la VCL et autre boite a légo du genre.
Essaye toi plutot au C/C++ en API, tu trouveras d'ailleurs beaucoup d'exemple sur ce site.
Dans mes sources il y a un exemple d'application client/serveur uniquement faite en API Win32.

Shell
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Merci pour ton aide, je vais voir ce que je peut faire pour le serveur d'ecoute, concernant la VCL je suis obligé de l'utiliser pour l'instant, quand j'aurai fini ce boulot je verrais certainement l'API(et foncerai sur tn article )
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
J'oublais,

Dans la partie serveur, dans le ButtonClick, ajoute ca avant le Active = true :
Server->Port = 9876;

Dans la partie cliente, dans le button click ajoute ca avant le Active = true :
Client->Port = 9876;
Client->Host = "127.0.0.1";

Tu peux supprimer le Open() après vérification il est inutile si tu utilises déjà le Active.

Shell