Bonjour,
J'aimerai coder une application serveur qui accepte des connexions TCP sur le port 1025.
J'ai donc utilisé un TIdTCPServer avec "DefaultPort" = 1025 et défini "Bindings" de telle sorte qu'il accepte toutes connexion sur le port 1025. Ensuite au runtime j'active/désactive le serveur sur le clique d'un bouton.
J'ai plusieurs problèmes et questions :
* Cette propriété "Bindings" est-elle indispensable ? je veux dire en indiquant "DefaultPort" à 1025 et en définissant aucun "Bindig" le serveur ne devrait-il écouter sur ce port et allouer automatiquement les sockets en utilisant ce port si besoin comme semble l'indiquer la doc Delphi : "TIdTCPServer uses the DefaultPort number to bind allocated sockets handles when the Active property to set to True." ?
* J'utilise un IdTCPClient avec la propriété "Port" = 1025 et je me connecte. En définissant l'événement "OnStatus" du client ainsi :
Je constate que mon client se connecte très bien....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TFormTCP1.IdTCPClientStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String); begin MemoClient.Lines.Add( 'Status : "'+AStatusText+'"' ); end;
par contre :
* Sur le serveur en définissant l'événément "OnConnect" ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TFormTCP1.ConnectServer; begin MemoServeur.Lines.Add( 'Connexion => '+FIdPeerThread.Connection.Socket.Binding.PeerIP+':'+ IntToStr( FIdPeerThread.Connection.Socket.Binding.PeerPort ) ); end; procedure TFormTCP1.IdTCPServerConnect(AThread: TIdPeerThread); begin FIdPeerThread:= AThread; AThread.Synchronize( ConnectServer ); end;
Je ne constate aucune connexion (pourtant le client se connecte au localhost, sur lequel tourne également le serveur ?).
=> Pourtant il ne peut y avoir qu'un serveur TCP qui écoute sur un port donné je suppose donc où est le problème ?
=> D'ailleurs quand je relance mon programme pour la seconde fois j'ai une erreur "Impossible d'établir une liaison avec le socket. L'adresse et le port sont déjà utilisé." ?? Cela prouve ce qu'un seul serveur TCP peut écouter sur un port donné à un instant donné mais je ne comprend pas comment l'ancien serveur peut toujours écouter ? Peut-être aurais-je du forcer unavant la terminaison du programme ? En même temps le composant devrait le faire automatiquement avant sa destruction non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part "Active:= false"
Merci de m'éclairer car certains choses demeurent flou pour moi avec ces composants.
![]()
FRANK
Partager