begin process at 2012 02 11 10:37:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

Probleme changement d'adresse Ip dans ma socket


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

Probleme changement d'adresse Ip dans ma socket

jeudi 20 octobre 2005 à 08:43:50 | Probleme changement d'adresse Ip dans ma socket

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....



Cette discussion est classée dans : ip, include, void, socket, csocket


Répondre à ce message

Sujets en rapport avec ce message

Probleme reception sur un serveur windows en vc++ [ par alfred ] Salut a tous!!g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi, toute mes socket sont positives le client envois Serveur Vc++6 pb dans recv [ par alfred ] Salut a tousJ'ai un probleme dans mon serveur et je ne sais pas comment le resoudre. Le client se connecte bien et envoie le bon nombre de caracteres Coleur texte et fond d'écrant texte [ par cognac ] Voici une partie de mon programme (ça provient d'un excellent tut.). Mais je suis incapable de coloré le texte et le «fond d'écrant texte» en même tem Coleur texte et fond d'écrant texte [ par cognac ] Voici une partie de mon programme (ça provient d'un excellent tut.). Mais je suis incapable de coloré le texte et le «fond d'écrant texte» en même tem creer une tempo [ par jimtruand ] salut!je voudrais savoir quel fichiers include on doit utiliser pour sleep que la compilation ne reconnait pasmon code est le suivant#include #include 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 Winsock probleme [ par greg13 ] J'ai une erreur de compilation dans le code suivant :#include #include #include #pragma comment(lib, "wsock32.lib")SOCKET Sock;int main(int argc, char winsock probleme 2 [ par greg13 ] J'ai une erreur de compilation dans le code suivant :#include #include #include #pragma comment(lib, "wsock32.lib")SOCKET Sock;int main(int argc, char Socket Raw [ par tquille ] Salut,J'utilise les socket en mode Raw et j'inclus l'entete IP à l'emission grace à la ligne suivante :setsockopt(socket,IPPROTO_IP,IP_HDRINCL,(char * Socket -> Ip [ par CyberP ] Comment obtenir l'adresse ip (sous forme de char* : xxx.xxx.xxx.xxx) à partir d'un objet socket (je ne veut pas d'objet SOCK_ADDR mais une ip en char*


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,981 sec (4)

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