[Delphi] Forcer le port d'un client (TClientSocket) ???

Forcer le port d'un client (TClientSocket) ??? [Delphi] - Programmation

Marsh Posté le 18-11-2001 à 20:54:34    

Comment forcer le client (TClientSocket) à utiliser un port particulier pour se connecter au serveur (TServerSocket) ???  
(le port dans les propriétés est le port du serveur)
Je veux spécifier le port avec lequel le client se connecte au serveur
Merci pour toutes réponses....

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 18-11-2001 à 20:54:34   

Reply

Marsh Posté le 19-11-2001 à 17:08:23    

:bounce: up :bounce:  
C important....
Personne à une réponse ?


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 22-11-2001 à 14:17:21    

:cry:  :cry:  :cry:  
 :spookie:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 22-11-2001 à 16:40:41    

Tu veux dire le Bound Port? C'est ca?
Si oui tu es mal parti... Tu sais pas le faire avec le TClientSocket, la tu sais voir le LocalPort mais tu sais pas le forcer...
 
Utilise les compos Indy (gratos et inclu depuis d5) et la y aussi un TTcpClient (TIdTcp ou je ne sais quoi) sur lequel tu sais specifier le port préféré... Je ne connais pas sa réaction si le port est déja utilisé, ca a toi de voir...
 
Au fait, remercie Antp, c'est grace a lui que je te reponds, il m'a supplié de le faire, je sais pas pourquoi :-D


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 22-11-2001 à 16:41:45    

buitoni a écrit a écrit :

 
Au fait, remercie Antp, c'est grace a lui que je te reponds, il m'a supplié de le faire, je sais pas pourquoi :-D  




 
ça me faisait mal au coeur de le voir faire des up dans ce topic où personne répond :D
 
:non: et d'abord j'ai pas supplié... je t'ai juste dit d'aller voir et de répondre si tu savais...

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 22-11-2001 à 16:45:04    

Ouai enfin soit, j'avais deja lu et c'etait pas clair, mais bon, tu m'as forcé, j'ai relu et j'ai compris ce qu'il voulait...
 
En plus il a du bol, j'avais justement delphi lancé :-p


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 22-11-2001 à 16:45:48    

Merci !!!!!!!!!!!!!!!!!  :jap:
Je vais essayer ça ce soir......
Mais y a un ptit hic..... C que le début du soft est basé sur TClientSocket/TServerSocket......
Je vais étudier la question...
Merci de ton aide  :jap:  :jap:  :jap:  
(Merci Antp aussi  :D )


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 22-11-2001 à 16:47:25    

buitoni a écrit a écrit :

Ouai enfin soit, j'avais deja lu et c'etait pas clair, mais bon, tu m'as forcé, j'ai relu et j'ai compris ce qu'il voulait...
 
En plus il a du bol, j'avais justement delphi lancé :-p  




Arf ok je vais + expliciter mais C pas évident à expliquer....
(Merci  :jap:  :jap: )


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 22-11-2001 à 16:58:31    

[SDF]Poire a écrit a écrit :

Merci !!!!!!!!!!!!!!!!!  :jap:
Je vais essayer ça ce soir......
Mais y a un ptit hic..... C que le début du soft est basé sur TClientSocket/TServerSocket......
Je vais étudier la question...
Merci de ton aide  :jap:  :jap:  :jap:  
(Merci Antp aussi  :D )  




 
C'est pas vraiment compliquer à changer, vu que tu t'es basé sur un truc bas niveau, tu as qqs appels à changer (le nom quoi) a part ca tout est la... Avec la propriété que tu veux en plus :-)
 
http://www.nevrona.com/indy si tu veux la derniere version d'Indy (je te le conseille)


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 22-11-2001 à 20:38:48    

buitoni a écrit a écrit :

 
 
C'est pas vraiment compliquer à changer, vu que tu t'es basé sur un truc bas niveau, tu as qqs appels à changer (le nom quoi) a part ca tout est la... Avec la propriété que tu veux en plus :-)
 
http://www.nevrona.com/indy si tu veux la derniere version d'Indy (je te le conseille)  




Arf..... moi qui voulait rester en bas niveau.....
En + je suis complétement paumé dans C composants Indy....
Alors soit C moi qui suis complétement con :pt1cable:  soit ça va pas être si facile que ça à changer.....
 
Je vais jeter un coup d'oeuil dans les sources pour voir comment ils font....  :D

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 22-11-2001 à 20:38:48   

Reply

Marsh Posté le 22-11-2001 à 20:49:51    

Ca change pas tant que ca par rapport au TClientSocket hein :)


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 22-11-2001 à 21:01:26    

buitoni a écrit a écrit :

Ca change pas tant que ca par rapport au TClientSocket hein :)  




Si (mais C où OnRead, OnWrite.....)!!!  
Mais je vais me démerder avec les sources...
Ca me donne une base de recherche....


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 22-11-2001 à 21:15:35    

Conclusion apres un ptit tout dans les sources de Indy :
TClientSocket C pas assez bas niveau... les gars de chez Borlands n'ont pas daignés prendre 10s pour rajouter une chtite propriété  :fou:  
C dans la connection que le socket précise le bound port (IOHandler.ConnectClient(Host, Port, BoundIP, BoundPort, BoundPortMin, BoundPortMax, ATimeout);) et vue que avec TClientSocket je me connecte avec Open qui prend pas de parametres.....
(Je sens venir la création d'un nouveau composant.... :D qui heritera fortement de TClientSocket....)
 
petite modif : IOHandler.ConnectClient(...) est tjs une methode appartenant à Indy...(Suis en train de chercher ce qu'elle utilise....)

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 22-11-2001 à 21:54:27    

C'est le bordel les sources d'indy hein?
 
J'ai essayé de lire un peu leur truc a cause d'une merde pour leur compo TIdHttp, après une heure j'ai pris une aspirine, un supo et au dodo :lol:
 
Sinon y en pleins d'autres tu sais des compos TTcpClient, va voir ICS de Fpiette par exemple, il est chouette aussi.
 
Y a aussi un compo TTcpClient des premieres heures de Delphi, si tu veux je peux essayer de le retrouver...


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 22-11-2001 à 21:57:38    

buitoni a écrit a écrit :

C'est le bordel les sources d'indy hein?
 
J'ai essayé de lire un peu leur truc a cause d'une merde pour leur compo TIdHttp, après une heure j'ai pris une aspirine, un supo et au dodo :lol:
 
Sinon y en pleins d'autres tu sais des compos TTcpClient, va voir ICS de Fpiette par exemple, il est chouette aussi.
 
Y a aussi un compo TTcpClient des premieres heures de Delphi, si tu veux je peux essayer de le retrouver...  




Tien une aspirine C pas une mauvaise ID.....  :pt1cable:  
Ca avance mais pas vite.... C vrai que C le bordel et qu'ils ont bien tout caché  :D  
Mais au moins y a les sources ce qui est déjà pas mal  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 22-11-2001 à 22:04:21    

http://overbyte.alexid.fr/frame_index.html
 
Va voir ca, les sources y sont aussi et le mec est Belge (comme moi ;p)


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 22-11-2001 à 22:07:37    

buitoni a écrit a écrit :

http://overbyte.alexid.fr/frame_index.html
 
Va voir ca, les sources y sont aussi et le mec est Belge (comme moi ;p)  




J'y go  :)  
Arf les gars de Indy ils sont encore + tordus que moi  :pt1cable: ils ont découpé ça en 3 millions de fichiers alors pour s'y retrouver  :pt1cable: ....


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 22-11-2001 à 22:20:19    

Bon G installé mais les sources je verrai demain.... les Indy m'ont tué....
Aprés l'aspirine je vais au dodo (excuse je saute le supo mais bon.....  :ange: )
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 22-11-2001 à 22:20:55    

[SDF]Poire a écrit a écrit :

Bon G installé mais les sources je verrai demain.... les Indy m'ont tué....
Aprés l'aspirine je vais au dodo (excuse je saute le supo mais bon.....  :ange: )
 :hello:  




 
Raaah, le supo, le supo! :)


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 22-11-2001 à 22:24:18    

buitoni a écrit a écrit :

 
 
Raaah, le supo, le supo! :)  




Non  :D  
 
Merci de ton soutient  :jap:  :jap:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 24-11-2001 à 01:02:00    

buitoni a écrit a écrit :

http://overbyte.alexid.fr/frame_index.html
 
Va voir ca, les sources y sont aussi et le mec est Belge (comme moi ;p)  




Bon G regardé un peu la source du composant (en particulier WSocket)....
C beaucoup mieux que les sources des Indy  :D  
J'appronfondi ça demain  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 24-11-2001 à 01:59:08    

[SDF]Poire a écrit a écrit :

 
Bon G regardé un peu la source du composant (en particulier WSocket)....
C beaucoup mieux que les sources des Indy  :D  
J'appronfondi ça demain  :D  




Ouai Indy ils font peur... ils respectent deja pas les guidelines de Borland alors que le projet est quand meme sous leurs ailes...

Reply

Marsh Posté le 24-11-2001 à 15:19:00    

Bon j'y suis presque.....
Y a un truc avec TSockAddrIn et TCustomWinSocket.InitSocket
Mais j'arrive pas à conclure.....


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 25-11-2001 à 21:53:27    

Arf je commence à désespérer.... (C pas ptet que je m'y prend mal....)
Tout ce que G réussi à trouver C un mal de crâne....
 
Si qq a une bonne aide socketwindows (en fr si possible....) je suis preneur...

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 28-11-2001 à 20:44:28    

C bon G trouvé !!!!!!!!!!!!!!!!!!!!!  :D  :D  :D  :D  
 
Merci à
  Buitoni  :jap:  :hello:  
  Antp  :jap:  :hello:  
  François Piette  :jap:  :jap:  :hello:  
  FOBEC :jap:  :jap:  :hello:  
  Catherine Verdier  :hello:  
Merci  
Le code arrive bientôt....
Lundi déjà j'aurai pu trouver.... (tout ça à cause d'un oubli de stdcall)
Merci encore à tous
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 28-11-2001 à 21:00:18    

Voilà le code :
 
unit Client1;
 
interface
 
uses
  Windows,....., Winsock;
 
const
  winsocket = 'wsock32.dll';
 
type
  Thtons = function (hostshort: u_short): u_short; stdcall;
  TInet_addr = function (cp: PChar): u_long; stdcall;
  TBind = function (s: TSocket; var addr: TSockAddr; namelen: Integer): Integer; stdcall;
 
.
.
.
 
var
  Form1: TForm1;
  Pseudo : String;
  FDllHandle: THandle;
  FBind: TBind;
  Fhtons: Thtons;
  FInet_addr: TInet_addr;
 
function WSocket_htons(hostshort: u_short): u_short;
function WSocketResolveHost(InAddr : String) : TInAddr;
procedure GetHostInfo(var Name, Address: string);
 
implementation
 
 
.
.
.
 
procedure TForm1.ButtonSeConnecterClick(Sender: TObject);
begin
  ClientSocket1.Port:= 600;
  ClientSocket1.Host:= '180.12.5.21';
  ClientSocket1.Open;
end;
 
procedure TForm1.ClientSocket1Connecting(Sender: TObject;
  Socket: TCustomWinSocket);
var
  SockNamelen: Integer;
  LocalSockName: TSockAddrIn;
  Ip, n: String;
begin
  GetHostInfo(n, Ip);
 
  FillChar(LocalSockName, Sizeof(LocalSockName), 0);
  SockNamelen := sizeof(LocalSockName);
  LocalSockName.sin_family := AF_INET;
  LocalSockName.sin_port := WSocket_htons(666);//Port Local
  LocalSockName.sin_addr.s_addr := WSocketResolveHost(Ip).s_addr;
 
  FBind(ClientSocket1.Socket.SocketHandle, LocalSockName, SockNamelen);
 
end;
 
function WSocket_htons(hostshort: u_short): u_short;
begin
  Result := Fhtons(hostshort);
end;
 
function WSocketResolveHost(InAddr : String) : TInAddr;
var
    szData: array [0..256] of char;
    IPAddr: u_long;
begin
    StrPCopy(szData, Trim(InAddr));
    IPAddr := FInet_addr(szData);
 
    Result.s_addr := IPAddr;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var
  ProcName: String;
begin
  FDllHandle := LoadLibrary(@winsocket[1]);
  ProcName := 'inet_addr';
  @FInet_addr := GetProcAddress(FDllHandle, @ProcName[1]);
  ProcName := 'htons';
  @Fhtons := GetProcAddress(FDllHandle, @ProcName[1]);
  ProcName := 'bind';
  @FBind := GetProcAddress(FDllHandle, @ProcName[1]);
end;
 
procedure GetHostInfo(var Name, Address: string);
var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
begin
  { no error checking...}
  WSAStartup(2, WSAData);
  SetLength(Name, 255);
  Gethostname(PChar(Name), 255);
  SetLength(Name, StrLen(PChar(Name)));
  HostEnt := gethostbyname(PChar(Name));
  with HostEnt^  do
    Address := Format('%d.%d.%d.%d',[
      Byte(h_addr^[0]),  
      Byte(h_addr^[1]),
      Byte(h_addr^[2]),  
      Byte(h_addr^[3])]);
  WSACleanup;
end;

 
Bon il manque la gestion des erreurs et qq trucs (genre la libération du port  :D ) mais à part ça ça marche  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 29-11-2001 à 21:03:29    

Bravo
 
 :hello:

Reply

Marsh Posté le 29-11-2001 à 21:09:39    

buitoni a écrit a écrit :

Bravo
 
 :hello:  




Un peu grace à toi  :jap:
Un composant arrive bientôt....  :D

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-12-2001 à 01:06:33    

[SDF]Poire a écrit a écrit :

 
Un peu grace à toi  :jap:
Un composant arrive bientôt....  :D  




 
Oh, tu te mets aux composants? T'en as deja fait? C'est bien... Apres faudra le publier hein ;-)

Reply

Marsh Posté le 02-12-2001 à 13:43:02    

buitoni a écrit a écrit :

 
 
Oh, tu te mets aux composants? T'en as deja fait? C'est bien... Apres faudra le publier hein ;-)  




G déjà fait composant  :D  
Et bien sur que je publierai  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed