cs_megamario
Messages postés145Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention14 février 2013
-
11 nov. 2009 à 16:56
dragonjoker59
Messages postés92Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention23 septembre 2015
-
15 févr. 2010 à 12:11
Bonjour,
J'aurais besoin de quelque petit renseignement sous C++builder 6
1er:
On fait un mini chat au lycée et je voudrais savoir comment reconnaitre et sauvegarder du coup dans une variable la ligne sélectionnée dans une listebox.
2eme:
Actuellement on fait le client. Les prof nous on donner le serveur.
Pour se faire il faut que:
1)On se connecte au serveur.
2)On demande au serveur un si le login que j'ai rentré n'est pas utilisé.
3)On demande la liste des connectés.
4)On sélectionne l'un des connectés dans une liste box pour lui envoyer un message.
Pour se faire je voulais en cliquant sur le bouton connecter qu'il face les 3 1ere étape, mais j'ai rencontré un problème car en cliquant sur le bouton on rentre dans une méthode, et "l'évènement" de la lecture du port Ethernet ne démarre que lorsque je sort de cette méthode.
Du coup je peut pas enchainer les demandes au serveur.
Alors m'a question, i a t'il un moyen simple de rendre la chose possible c'est a dire suspension dans la méthode pour attendre que l'évènement se finisse. Ou comme je pense, le seul moyen c'est faire des threads et sémaphore.
Il y a peut être une autre solution que j'avais pris pendant mon stage (en VB.net)c'est de ne pas utilisé l'évènement mais faire un appel en lecture manuel avec un time-out.
Merci de votre aide.
Technicien en électricité industriel (39 ans). En cours de reconversion par un BTS IRIS 2éme année.Actuellement en cours.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 14 nov. 2009 à 15:43
Bonjour,
Pour la ListBox, je te réponds en Delphi (Utilise aussi la VCL). Tu devrais arriver à traduire en C++.
procedure TForm1.Button1Click(Sender: TObject);
var
lpLine: String;
begin
lpLine:= '';
if ListBox1.ItemIndex <> -1 then
lpLine:= ListBox1.Items[ListBox1.ItemIndex];
ShowMessage(lpLine);
end;
cs_megamario
Messages postés145Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention14 février 2013 14 nov. 2009 à 21:48
Merci j'ai trouvé pour la liste box:
AnsiString Nom;
int Nbr = ListBoxConnecter ->ItemIndex ;
if (Nbr>-1)
{
Nom = ListBoxConnecter ->Items ->Strings [Nbr];
}
Par contre toujours pas trouvé pour mon 2eme probleme, le prof m'a donnée comme solution d'utilisé:
Application->ProcessMessages();
Mais j'ai un gros plantage a la lecture de cette ligne, j'ai fait un post la dessus.
Technicien en électricité Industriel (39 ans), en cours de reconversion BTS IRIS 2eme Année.
Au lycée pendant l'année scolaire, et en stage pendant les vacances scolaire.
dragonjoker59
Messages postés92Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention23 septembre 2015 15 févr. 2010 à 12:11
Je crois qu'il faut que tu redécomposes tes étapes (si possible, vu que tu ne codes que la partie client pour l'instant)
1) (Côté client)Tu essaies de te connecter (tu envoies ton login au serveur)
2) (Côté serveur) Il reçoit tes infos de connexion, il regarde si c'est correct, il t'envoie un message disant 'OK' ou 'Pas OK'.
3) (Côté client) Tu reçois le message de résultat de connexion. Là, en fonction du résultat, tu demandes au serveur la liste des connectés.
4) (Côté serveur) Il reçoit du client une demande de la liste de connectés. Si le client est connecté, il la lui fournit.
5) (Côté client) Tu reçois la fameuse liste de connectés, tu en fais ce que tu en as besoin.
Donc en fait, il te faut une boucle de traitement des messages réseau, et en fonction du message reçu, tu effectues le traitement approprié. Pour cela, tu dois pouvoir utiliser des sockets de communication réseau non bloquants. Je te parles de cette méthode là car c'est selon moi la plus efficace, car le fait d'utiliser des sockets bloquants bloquerait même l'affichage de l'application (à moins que ta gestion de socket soit threadée, ce qui reviendrait au même que de faire du socket non bloquant).