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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Client/Serveur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Client/Serveur

n°1758181
Googboy21
Posté le 10-07-2008 à 22:31:22  profilanswer
 

Bonjour, depuis qq jours je m'arrache les cheveux sur une application client/serveur que je realise en delphi.
présentation de l'application:
 d'un coté j'ai un programme client a travers lequel on peut se connecter , envoyer des messages , visualiser les fichiers que possede les autres utilisateurs et eventuellement les télécharger.
De l'autre coté j'ai un programme seveur qui dispatch les données vers les utilisateurs suivant les requêtes et les réponses.
mon problème est le suivant: en réseaux local, c-a-d 2 PC connecté en entre eux le programme fonctionne parfaitement,j'ai même connecté une trentaine de clients et aucun bug. mais dès que j'essaie de l'utiliser à travers internet le programme bug lors de l'envoi de flot de données important tels que fichiers ou liste de répertoire alors de l'envoi de messages texte  ne pose aucun problème.
je pense que le souci vient de l'initialisation de mes sockets:
je vous donne l'implémentation des mes classes PSocket et PServer;
 
PSocket=class
Private
       Sock: TSocket;
       FAddr: TSockAddrIn;
       FConnect:Boolean;
       Flong:integer;
 
public
     constructor  Create; overload;
      constructor  Create(csock:TSocket);overload;
      destructor Destroy; override;
      procedure SetAttr(const adr:string;port:integer);
      procedure Activer;
      procedure Close;
      function IsValide:boolean;
      function EnvoiBuf(var Buf; Count: Integer): Integer;
      function RecoiBuf(var Buf; Count: Integer): Integer;
      function EnvoiText(const s: string):Integer;
      function RecoiText:string  ;
      function GetLocalHost: string;
      function GetLocalPort: Integer;
      function GetRemoteHost: string;
      function GetRemoteAddress: string;
      function GetRemotePort: Integer;
      function GetRemoteAddr: TSockAddrIn;
      function GetLocalAddress: string;
      procedure Deconnecter ;
end;
 
procedure Startup;
begin
     WSAStartup(MAKEWORD(2,0), WSAData);
end;
procedure Cleanup;
begin
   WSACleanup;
end;
 
      constructor PSocket.Create;
       begin
        inherited Create;
        Startup;
        sock:=0;
        FConnect:=false;
 
       end;
 
procedure PSocket.SetAttr(const adr: string;port:integer );
begin
        FAddr.sin_family := AF_INET;
        FAddr.sin_addr.s_addr := inet_addr(PChar(adr));
        FAddr.sin_port := htons(port);
end;
procedure PSocket.Activer();
var
   tmp:integer;
begin
        if FConnect then
        deconnecter ;
        sock:=socket(PF_INET, SOCK_STREAM, 0);
        tmp:=winsock.connect(sock,FAddr,SizeOf(FAddr));
        if tmp=0 then
        if(sock<>INVALID_SOCKET) then
         OnConnect;//pointeur sur fonction
        FConnect:=True;
         
end;
 
destructor PSocket.Destroy;
begin
    closesocket(Sock) ;
    Cleanup;
   inherited destroy;
end;
 
 
-----------------------PSERVer-------------------------------------------------------
 PServer=class
   private
            FSock:TSocket;
            FAddr: TSockAddrIn;
            FConnect:Boolean;
   public
          constructor Create;
          destructor  Destroy;
          procedure   SetAttr(port: integer);
          procedure   Activer;
          function   Accept:PSocket;
          procedure  Listen;
 
end;
 
 constructor PServer.Create;
 begin
        inherited Create;
        Startup;
        Fsock:=0;
        FConnect:=False;
 end;
 
 procedure PServer.SetAttr(port:integer);
 begin
        FAddr.sin_family := AF_INET;
        FAddr.sin_addr.s_addr := INADDR_ANY;
        FAddr.sin_port := htons(port);
 end;
 
 procedure PServer.Activer;
 begin
        if FConnect then
        deconnecter ;
        Fsock:=socket(AF_INET, SOCK_STREAM, 0);
        bind(Fsock, FAddr, SizeOf(FAddr));
        Winsock.listen(FSock,5) ;
        FConnect:=True;
       
 end;
 
ce serai sympa si qq1 pouvai m'aider!!

mood
Publicité
Posté le 10-07-2008 à 22:31:22  profilanswer
 


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

  Client/Serveur

 

Sujets relatifs
Socket communication Appli Client/Serveur[conception] souci de choix pour une appli client/serveur
client-serveur UDP probléme de communicationclient-serveur probléme
PHP : générer un fichier PDF côté serveur et l'imprimer côté client[Webservice] Serveur Xfire & génération d'un client à partir d'un WSDL
serveur/client linuxconnexion serveur/client python
2 threads entre un client et un serveurrealisation d'un programme client / serveur
Plus de sujets relatifs à : Client/Serveur


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