Socket in DLL Öffnen



  • Hallo,

    ich möchte einen Verbindung über die Komponente TClientSocket in einer dll herstellen.

    mein Code:

    TClientSocket *pSocket;
    
    CEthernetPort::CEthernetPort(void *pTag)
    {
    	// Initialisierungen
       pSocket = new TClientSocket(NULL);
       pSocket->Active = false;
       pSocket->Address = "192.168.20.15";
       pSocket->Port = 4007;
       pSocket->ClientType = ctNonBlocking;
       pSocket->OnConnect = this->pSocketConnect;
       bIsConnected = false;
    }
    
    void __fastcall CEthernetPort::pSocketConnect(TObject *Sender,
          TCustomWinSocket *Socket)
    {
       bIsConnected = true;
    }
    
    TBool CEthernetPort::OpenPort()
    {
    	TBool bResult;
       int i = 0;
    
       pSocket->Open();
       while ((!bIsConnected) && (i<1000))
       {
          Sleep(1);
          i++;
       }
    
       if (bIsConnected) bResult = false;
       else bResult = true;
    
    	return(bResult);
    }
    

    nun ist das Problem das die Funktion pSocketConnect nie gerufen wird und ich weiß nicht warum.
    Wenn ich den Socket in ein normales Form einfüge also die komponente draufschiebe geht es. Was ist der unterschied dazu wenn ich sie mit new erzeuge?

    MfG



  • Falls es noch jemand interressiert der Socket hat nicht funktioniert weil ich in der while Schleife die Messages bearbeiten mußte.

    MfG



  • hast du das problem gelößt ? sonst hätt ich dir GetMessage() oder PeekMessage empfohlen ^^


Log in to reply