begin process at 2008 08 20 17:32:38
1 228 990 membres
350 nouveaux aujourd'hui
14 259 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme changement d'adresse Ip dans ma socket [ Archives / Réseau / Internet ] (kingdom_slayer_666)

Probleme changement d'adresse Ip dans ma socket le 20/10/2005 08:43:50

kingdom_slayer_666
Bonjour,

Voila j'aimerais envoyer un packet UDP a diiferentes adresses Réseau (IP). En utilisant Builder 5 j ai créer ma socket dans une classe liée a mon IHM prinicpale par un objet. Je veut aussi pouvoir changer l adresse Ip quand je veut donc j ai fait une fenetre spéciale pour récupérer la nouvelle adresse qui elle aussi a un objet de ma classe socket. (l objet des deux fenetre a été défini dans la classe directement).

Tout marche c cool.... enfin presque....

Mon probleme c'est que mon changement d'adresse influe sur ma classe mais pas sur ma socket...

Que faire???

PS : il existe un thread me permettant uniquement de recevoir des paquet UDP. il possede sa propre socket

/* Code source de l IHM principale

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

#include <vcl.h>
#pragma hdrstop

#include "IHM.h"
#include "ClassSocket.h"
#include "ThreadRecept.h"
#include "ChgtAdr.h"

#include <string.h>
#include <Winsock2.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFEthernet *FEthernet;

ThreadR *Thread;

//---------------------------------------------------------------------------
__fastcall TFEthernet::TFEthernet(TComponent* Owner)
        : TForm(Owner)
{
        Thread = new ThreadR (true);
        Thread->Priority = tpNormal;
        Socks.Initialisation();
}

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

void __fastcall TFEthernet::BEnvoiClick(TObject *Sender)
{

        char ToSend[9];

        memset(ToSend,0,sizeof(ToSend));
        strcpy(ToSend,"GetMesure");
        sendto(Socks.FPSocket,ToSend,sizeof(ToSend),0,(SOCKADDR*)&Socks.SinFP,sizeof(Socks.SinFP));

        Thread->Resume();

}
//---------------------------------------------------------------------------
void __fastcall TFEthernet::EVConsigneChange(TObject *Sender)
{
        Thread->Suspend();
}
//---------------------------------------------------------------------------

void __fastcall TFEthernet::AdresseIP1Click(TObject *Sender)
{
        FEthernet->Enabled=false;
        FAdrIP->Enabled=true;
        FAdrIP->Visible=true;
}
//---------------------------------------------------------------------------
*/

/* code de la classe socket

#include <Winsock2.h>
#include <String.h>
#include "IHM.h"

class CSocket
{
        public:

        int Port;

        char IP[15];

        WSADATA WsaSocket;
        SOCKET FPSocket;
    SOCKADDR_IN SinFP;

        CSocket (void);
        ~CSocket (void);

        void Initialisation (void);
};

CSocket Socks;

CSocket::CSocket()
{
        strcpy(IP,"128.128.1.11");
        Port = 2000;

}

CSocket::~CSocket ()
{
        closesocket(FPSocket);
        WSACleanup();
}

void CSocket::Initialisation (void)
{

        WSAStartup(MAKEWORD(2,0),&WsaSocket);

        SinFP.sin_family=AF_INET;
    SinFP.sin_addr.s_addr=inet_addr(IP);
    SinFP.sin_port=htons(Port);

        FPSocket=socket(AF_INET,SOCK_DGRAM,0);
    bind(FPSocket,(SOCKADDR*)&SinFP,sizeof(SinFP));
}
//-------------------------------------------------------------
*/

/* code de la page de recup d adresse IP
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "ChgtAdr.h"
#include "IHM.h"
#include "ClassSocket.h"

#include <string.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFAdrIP *FAdrIP;

//---------------------------------------------------------------------------
__fastcall TFAdrIP::TFAdrIP(TComponent* Owner)
        : TForm(Owner)
{
        EAdrIP->Text="128.128.";
}
//---------------------------------------------------------------------------
void __fastcall TFAdrIP::BValidIPClick(TObject *Sender)
{
        Socks.SocketConfigure = true;
        strcpy(Socks.IP,EAdrIP->Text.c_str());
        Socks.Initialisation();
        FEthernet->Enabled=true;
        FAdrIP->Visible=false;
        FAdrIP->Enabled=false;
}
//---------------------------------------------------------------------------
*/

/*code du thread
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "ThreadRecept.h"
#include "IHM.h"
#include <Winsock2.h>
#pragma package(smart_init)

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

__fastcall ThreadR::ThreadR(bool CreateSuspended)
        : TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall ThreadR::Execute()
{
        WSADATA WsaThread;
    WSAStartup(MAKEWORD(2,0),&WsaThread);

    SOCKET SockThread;
    SOCKADDR_IN SinThread;

    SinThread.sin_family=AF_INET;
    SinThread.sin_addr.s_addr=INADDR_ANY;
    SinThread.sin_port=htons(2000);

    SockThread=socket(AF_INET,SOCK_DGRAM,0);
    bind(SockThread,(SOCKADDR*)&SinThread,sizeof(SinThread));

    char ChRecue[50];
    int sinsize=sizeof(SinThread);

    while(!Terminated)
    {
        memset(ChRecue,0,sizeof(ChRecue));
        recvfrom(SockThread,ChRecue,sizeof(ChRecue),0,(SOCKADDR*)&SinThread,&sinsize);
                FEthernet->EVConsigne->Text=ChRecue;
        strcpy(ChRecue,"");
        }
}
//---------------------------------------------------------------------------
Merci de votre aide!!!! Car moi la je comprend plus rien normallement ca devré bien se passer....



Classé sous : ip, include, void, socket, csocket

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
campagne Adwords
Budget : 5 000€
Boite echanges securis...
Budget : 500€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS