Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1464 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Pbm avec les sockets Client et Server de Delphi !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pbm avec les sockets Client et Server de Delphi !

n°136822
gropoli
Posté le 09-05-2002 à 21:07:46  profilanswer
 

Euh... je ne sais pas par où commencer ! Bon, pour simplifier les choses, on va dire que j'utilise les sockets client et server dans 2 applications différentes (en fait c'est un petit jeu avec des fourmis, mais pour l'instant je fais des tests avec une appli réservée au client et une autre au serveur).
J'ai tout configuré (et dans mon code et dans l'inspecteurs d'objets) pour que le port soit à 600 (par ex), et que le client se connecte bien au serveur (dans le code comme dans l'inspecteur, le client se connecte  à l'ordi 'nico', nom de l'ordi où je fais tourner le serveur), de même dans le client comme dans le serveur je n'oublie pas d'ouvrir les sockets avec ClientSocket1.Open et ServerSocket1.Open !
Tout devrait donc être OK !
Mais lorsque je lance les 2 appli (qui se compilent et s'executent d'ailleurs sans aucun pbm) et que j'appuie sur une touche du clavier (côté serveur) qui correspond à l'envoie par le réseau de la chaîne 'nouvelle', eh bien ça plante avec un message d'erreur qui dit qqchose du genre 'le serveur a envoyé des données mais dans le vide' ! Donc j'en déduis que le Client n'est pas connecté au serveur et pourtant s'il ne l'était pas il me le dirait (le client) or il ne me dit rien !
Bon c'est un peu compliqué tout ça mais ce que j'aimeais simplement pour le moment, c'set que l'on m'aide à trouver ce que j'aurrai pu oublier de faire !
Est-ce qu'il faut mettre la propriéte Active du Server et du Client à True ou False (non ma question n'est pas idiote, il arrive que ça marche à False !) ou bien dois-je le faire dans mon code avec ClientSocket1.Active := true ou false ou ServerSocket1.Active := true ou false  
 
Ou bien y a-t-il autre chose que j'ai pu oublier ?!
 
merci beaucoup pour toute réponse ou conseil
@ très bientôt j'éspère
 
PS : NE VOUS LAISSEZ PAS DECOURAGER PAR LA LONGUEUR SVP !!!

 

[jfdsdjhfuetppo]--Message édité par gropoli le 09-05-2002 à 21:08:19--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 09-05-2002 à 21:07:46  profilanswer
 

n°136824
gropoli
Posté le 09-05-2002 à 21:16:12  profilanswer
 

Aller, lisez quoi !   :bounce:

n°136838
bjbebert
Posté le 09-05-2002 à 21:47:44  profilanswer
 

Est-ce que tu peux faire afficher un message par le serveur lorsqu'il reçoit la demande de connexion (histoire d'être sur que le client s'est bien connecté) ?
Vérifie aussi la procédure de connexion de la part du client.
 
PS : tu utilises TCP je suppose ?

n°136863
gropoli
Posté le 09-05-2002 à 22:31:59  profilanswer
 

je ne connais pas la fonction à utiliser chez le serveur qui montre les demandes de connexions de client, mais le clien se connecte bien, j'ai vérifié avec une vieille appli cliente que j'avais faites et qui indique tout simplement si elle est connectée au serveur !
ah oui ok je sais je vais utiliser la propriété OnClientConnect pour en être vraiment certain !
bon je vais essayer ça et je te tiens au courant
merci beaucoup  
@+
 
ps : qu'est-ce que tu entends pat TCP, moi j'utilise les sockets de delphi !

n°136870
gropoli
Posté le 09-05-2002 à 22:39:19  profilanswer
 

OUI ! le client se connecte bien au server donc le server ne devrait pas dire qu'il n'est pas connecté !
en fait voici plus précisement le message d'erreur :
 
"Le projet extv13.exe (nom de mon programme) a provoqué une classe d'exception ESocketError avec le message 'Erreur socket Windows : Une requête d'envoie ou de réception de données n'a pas été autorisée car le socket n'est pas connecté et (lors de l'envoie sur un socket datagramme en utilisant un appel sendto) aucune adresse n'a été fournie (10057), avec l'API 'send. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer."
 
Bon ! Alors tu y comprensd qqchose ?
merci de t'intéresser à mon pbm (car en plus c'est assez urgent)
@ bientôt

 

[jfdsdjhfuetppo]--Message édité par gropoli le 09-05-2002 à 22:45:54--[/jfdsdjhfuetppo]

n°136879
bjbebert
Posté le 09-05-2002 à 22:58:12  profilanswer
 

gropoli a écrit a écrit :

ps : qu'est-ce que tu entends pat TCP, moi j'utilise les sockets de delphi !  



Y a principalement deux modes de communication par réseau IP :
- UDP : les machines s'échangent des paquets. Il n'y a pas réellement de notion de connexion.
- TCP : un client se connecte à un serveur. Le lien (bi-directionnel) permet d'échanger un flux de données.
 
Je sais pas trop comment fonctionnent les objets sockets de Delphi, mais tu dois avoir le choix pour la création.

n°136885
bjbebert
Posté le 09-05-2002 à 23:06:56  profilanswer
 

gropoli a écrit a écrit :

"Le projet extv13.exe (nom de mon programme) a provoqué une classe d'exception ESocketError avec le message 'Erreur socket Windows : Une requête d'envoie ou de réception de données n'a pas été autorisée car le socket n'est pas connecté et (lors de l'envoie sur un socket datagramme en utilisant un appel sendto) aucune adresse n'a été fournie (10057), avec l'API 'send. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer."



Tu ne devrais pas avoir 2 sockets côté serveur :??:  
 
Quand tu utilises directement l'API Win32, ca se passe comme ca (côté serveur) :
- tu crées une socket que tu mets sur le port que tu as choisi et qui attend les connexions
- lorsqu'une connexion arrive, la fonction qui était bloquée retourne un résultat, qui correspond à une nouvelle socket, connectée sur le client
- tu remets la première socket en attente (pour une autre demande de connexion)
 
Tu as ainsi 1 socket d'attente et 1 socket pour chaque client connecté. Mais la socket d'attente n'est jamais connectée à aucun client. Je suppose qu'on retrouve un peu les même notions avec les objets.

n°136895
*syl*
--> []
Posté le 09-05-2002 à 23:35:41  profilanswer
 

Va voir là, ça t'aideras sûrement : http://membres.lycos.fr/forumikare [...] c.php?t=48
 
C'est du builder mais c'est kifkif avec delphi ;)

n°136899
bjbebert
Posté le 09-05-2002 à 23:55:20  profilanswer
 

Je viens de télécharger l'aide de Delphi. D'après ce que j'ai compris :
Lorsqu'une connexion arrive, un évènement OnGetSocket est généré, avec la nouvelle socket (celle qui est effectivement connectée au client).
C'est cette nouvelle socket que tu dois utiliser pour dialoguer avec le client.

n°137055
gropoli
Posté le 10-05-2002 à 11:52:17  profilanswer
 

merci beaucoup mais le pbm c'est que j'ai déjà fais des appli client et serveur de chat (comme décrites dans ton lien) et elle marche nickel mais elle ne marche plus lorsqu'elle sont intégrées dans mon jeu ! ouai mais là il faudrai que je vous explique le fonctionnement interne du jeu et on a pas fini
c'est pas grave je vais encore chercher
merci beaucoup à tout les 2 et si vous avez quand même une idée, faites moi signe !  ;)  
encore merci  
@+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Pbm avec les sockets Client et Server de Delphi !

 

Sujets relatifs
[delphi] mon programe a une erreur , je la trouve pas ...[delphi]Ou est le bug ???? je suis sureque c un truc otut con en plus!
[delphi]Comment fonctione la stringgrid?[delphi] recuperer une partie d'un string ou meme juste une lettre????
[Delphi] comment récupérer le label d'un volume ?Delphi : probleme de IF
[Delphi] Client/Serveur : gérer l'évenement "on error" du socket.[Delphi] Alignement dans un DBGrid
[DELPHI] faire un ping sur... 
Plus de sujets relatifs à : Pbm avec les sockets Client et Server de Delphi !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR