Sockets

cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011 - 22 janv. 2008 à 10:27
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 22 janv. 2008 à 10:57
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

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
22 janv. 2008 à 10:46
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
0
cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011
22 janv. 2008 à 10:54
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 )
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
22 janv. 2008 à 10:57
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
0
Rejoignez-nous