begin process at 2012 05 28 08:42:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Réseau & Internet

 > 

Client(c++Builder)/Serveur(linux)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Client(c++Builder)/Serveur(linux)

mardi 12 mai 2009 à 14:59:55 | Client(c++Builder)/Serveur(linux)

willixs

Bonjour j'ai fait un socket client sur c++ builder et un serveur socket sur linux mais j'ai un probleme c'est que j'ai créé un tableau de caractères sur mon serveur que j'envoie à mon Client,cependant j'ai du mal à bien afficher les valeurs envoyées sur mon ihm Client .je veux que ca m'affiche les valeurs définies dans mon tableau.

code Serveur :
main :
/*#ifdef HAVE_CONFIG.H
#include <config.h>
#endif*/
//#include <stdlib.h>
//#include <stdio.h>
//#include <unistd.h>
//using namespace std;
#include "./CSocket.h"
#include "ConvStrInt.h"

using namespace std;

int main()
{   int test,ad,seuil[60];
//int seuili;
    char * seuila;
    int i=0,j=0,k=0;
    char temp[8][3];
    //float temperature[8];
    char temperature[16]={1234,02,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

    cout << "MODULE SERVEUR SOCKET FOX" << endl;
   //Instanciation de la classe CSocket
    CSocket *socketFox = new CSocket();
    //NOMINATION SOCKET
    test = socketFox->nommer_socket();
// ATTENTE CONNEXION
    test = socketFox->attendre_connexion();
//ACCEPTATION CONNEXION
    test=socketFox->accepter_connexion();
    cout<<"CLIENT CONNECTÉ : attente caractère "<< endl;
//RECEPTION CHAR
//int i=0;

   /* ad=socketFox->recevoir();
    seuila=(char *)ad;
    cout<< seuila <<endl;
    ConvStrInt *Conversion = new ConvStrInt();
    while(j<8)
    {   while(seuila[i]!='.')
        {   temp[j][k]=seuila[i];
            i++;
            k++;
        }
        temp[j][k]=0x00;
        cout << temp[j] << endl;
        Conversion->Conv(temp[j]);
        k=0;
        j++;
        i++;
    }
    cout << "Fin conversion" << endl;*/

    socketFox->envoyer(temperature); //J'envoie mon ta
    socketFox->~CSocket();
    cout<<"Client déconnecté "<<endl;
    return 0;
}

CSocket.h
#ifndef CSOCKET_H_INCLUDED
#define CSOCKET_H_INCLUDED
//#include <stdio.h>
//#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
#include <iostream.h>
#include <netinet/in.h>
#include "ConvStrInt.h"
//#include <stdlib.h>
const int MAXCONNECTIONS = 5 ;
class CSocket
{   public:
        char valeur[60];
                char  *donnees;
                CSocket();
        ~CSocket();
        int nommer_socket();
        int attendre_connexion();
        int accepter_connexion();

        //TRANSMISSION DE DONNEES

        int recevoir();
                int envoyer(char* );

//CLIENT INITIALISATION
        int connexion();

    private:
        int test,idSockServ,idSockClient;
        //sockaddr_un m_addr;
//int server_sockfd, client_sockfd;
    int server_len, client_len;
    struct sockaddr_in server_address , client_address;

};


#endif // CSOCKET_H_INCLUDED

CSocket.cpp
#include "./CSocket.h"

CSocket::CSocket()
{   cout << "Instanciation de la classe CSocket" << endl;
    idSockServ=socket( AF_INET, SOCK_STREAM,0);
    if(idSockServ==-1)
    {   cout<<"\n Création du socket : IMPOSSIBLE "<<endl;
        perror("Erreur Création du socket");
        exit(-1);
    }
    else
    cout<<"\n Création du socket : OK " <<"IDENTIFIANT : " << idSockServ << endl;
}

CSocket::~CSocket()
{

    cout << "Fermeture socket" << endl;
    close(idSockServ);

};

//NOMINATION SOCKET
int CSocket::nommer_socket()
 {  int tr=1;
    if (setsockopt(idSockServ,SOL_SOCKET,SO_REUSEADDR,&tr,sizeof(int)) == -1)
    {
    perror("setsockopt");
    exit(1);
    }
    //REMPLISSAGE DES STRUCTURES
    server_address.sin_family = AF_INET;
    server_address.sin_addr.s_addr=htonl(INADDR_ANY);
    server_address.sin_port=htons(9734);
    server_len=sizeof(server_address);
    test= bind(idSockServ, (struct sockaddr *) &server_address, sizeof (server_address));
    if(test==-1)
    {   cout << "\n Nomination du socket : IMPOSSIBLE" << endl;
        perror("ERREUR DE TYPE");
        this->~CSocket();
        exit(-1);
    }
    else
    cout << "\n Nomination du socket : OK" << endl;
    return(0);
 }
//ATTENTE CONNEXION
int CSocket::attendre_connexion()
{   test = listen (idSockServ,5);
    if(test==-1)
    {   perror("listen KO");
        this->~CSocket();
        exit(-1);
    }
    cout << "listen OK" << endl;
    return(0);
}

//ACCEPTER CONNEXION
int CSocket::accepter_connexion()
{   int addr_lenght = sizeof(server_address);
   idSockClient=accept(idSockServ, (sockaddr *) &client_address, (socklen_t *) &addr_lenght );
    if(idSockClient==-1)
    {   perror("Acceptation KO");
        this->~CSocket();
        exit(-1);
    }
    cout << "Acceptation OK " << client_address.sin_addr.s_addr << endl;
    return(idSockClient);
}

 

//recevoir

int CSocket::recevoir()
{   test=read(idSockClient, valeur, 60);
    if(test==-1)
    {   perror("Réception KO ");
        this->~CSocket();
        exit(-1);
    }
    //printf("Seuil : %s\n",seuil);
    //for (int i=0;i<8;i++)
    {     cout << "Réception OK " << test << endl;
    }
    return ((int)valeur);
}
//ENVOYER
int CSocket::envoyer(  char* donnees)
{   //cout << "\n message à envoyer :" <<donnees<< endl;
    for (int i=0;i<8;i++)
    {   cout<< donnees[i] << endl;
        test=write(idSockClient,donnees, 8);
        if(test==-1)
        {   perror("Emission KO ");
            this->~CSocket();
            exit(-1);
        }
        donnees++;
    }
        {
        cout << "Envoi OK " << test << endl;
        }
    return(test);
}


                                                                                           //CONNEXION
int CSocket::connexion()
{   //m_addr.sun_family = AF_INET;
    //strcpy(m_addr.sun_path,"socket_serveur");
    test = connect(idSockServ, (sockaddr *) &server_address,sizeof (server_address));
     if(test==-1)
    {   perror("Connexion KO");
        this->~CSocket();
        exit(-1);
    }
    cout << "Connexion OK" << endl;
    return(0);
}

Coode Client sous C++ Builder:

IHM.cpp

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "IHM.h"
#include "Configuration.h"
#include <winbase.h>
#include <windows.h>
#include <IniFiles.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
ClientSocket1->Open();

//---------Affichage de la date à l'ouverture de la fenêtre------------------------------------------------------------------
Horloge->Caption=DateTimeToStr(Now());

}

//--Quand on clique sur le bouton configurer ,cela affiche la page de configuration -------------------------------------------------------------------

void __fastcall TForm1::Bu_Config_SeuilClick(TObject *Sender)
{
Form2->Visible=true;

}

 

//---------------------------------------------------------------------------

void __fastcall TForm1::Ed_companyChange(TObject *Sender)
{
Panel1->Caption=Ed_company->Text;       
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{
Ed_Etat->Text="La communication est établie avec la carte FOX";       
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
ShowMessage("Erreur, Verifier que la carte FOX est à l'écoute du client");
}
//------Reception Tableau envoyé par serveur---------------------------------------------------------------------

void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
      TCustomWinSocket *Socket)
{
Edit9->Text=Socket->ReceiveText();
}

mardi 12 mai 2009 à 17:49:55 | Re : Client(c++Builder)/Serveur(linux)

fregolo52

Membre Club

char temperature[16]={1234,02,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
un char qui vaut 1234, ca me fait peur sachant que ses limites sont -128 / +127

utilise wireshark (ou ethereal) pour espoinner les trames IP. Ca aide a comprendre les 'bug' de programmation.


Cette discussion est classée dans : int, test, include, cout, csocket


Répondre à ce message

Sujets en rapport avec ce message

Dans le genre prenant........ [ par Xs ] oui !c 'est trés chiant !j'explique mon pb : j'ai un code source, fais par moi-meme, et dedans, je veux que l'on saisisse des renseignement comme le l une fiche de renseignement [ par cabarrus ] je cherche à faire un programme qui demande des renseignements pour pouvoir ensuite les affiché comme une fiche d'identité!!!voici monprogramme mais m Les nombres aléatoires en C++ (Visual C++ 6.0) [ par Yabo ] Tout d'abord voilà le code :CODE #include #include #include #include using namespace std;void animstartscreen() { int n Passer un algo iteratif en recursif [ par Peavy57 ] Selon vous est ce possible de mettre cela en recursif ? Code: #include #include #include #include void sequencesSerie4(int seq[],int seqSize, int erreur incomprise ... [ par tontonjab ] bonjour ... j'ai un probleme avec mon code source, et j'aimerais bien que vous y jetié un coup d'oeil pour m'aider !////////////////////#include #incl Pb perte initialisation variable C++ [ par smagf ] Bonjour, alors voici mon pb :   pDecrypter = new Computer(duplicates) un nouvel objet de type Computer est créé Computer::Computer(bool dupes): Decryp problème de OutPut [ par NAVIE ] Bonjour, J'écris ce message pour demander de l'aide au sujet des gestions des Input et des Output. En effet, dans un programme que j'ai fabriqué, je m probleme de retour de valeur [ par darmoor ] Salut! Bon je veut faire un petit prog en mode console qui fait les statistique d'un lancement de dé. J'ai commencé le debut: #include #include # [dev c++] mot de passe c++ [ par kiki67100 ] Bonjour jaimerais savoir comment faire une petit gestion de mot de passe en c++ voici mon codes mais meme avec un faux mot de passe sa marche /*** PRO fork et execvp [ par fullpirates ] Bon je vous explique j'ai un travail de mi-session à remettre pour mercredi et j'ai essayer bien comme mal a faire fonctionner la commande execvp ...


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales