Connection



  • Hallo!
    Ich habe eine Client-Server Anwendung, bei der der Server
    ursprünglich ein Fenster war.
    Nun möchte ich aber das Fenster durch eine DialogBox ersetzen.
    Habe diese beiden Code-Segmente:

    CMainFrame* pFrame = new CMainFrame;
    m_pMainWnd = pFrame;
    
    ServerDlg dlg;
    //m_pMainWnd = &dlg;
    

    Ich dachte, ich könnte einfach den unteren Teil
    stehen lassen und die oberen Zeilen weglassen.
    In der MainFrame-Klasse steht quasi nichts drin!
    Trotzdem funktioniert die Connection nicht, wenn ich
    die beiden Zeilen weglasse.
    Könnte das daran liegen, dass ServerDlg die Callback-
    functions nich findet?
    Habt ihr ne Idee, was mein Fehler is? 😕



  • Drück dich bitte genauer aus. Jedes Programm welches man am Desktop sieht ist ein Fenster.
    Ein Dialog ist auch ein Fenster



  • ja ok, sorry!

    das ursprüngliche Fenster war ein einfaches leeres
    Fenster mit Menü und Toolbar.

    Das neue Fenster (Dialog) soll Eingabefelder und
    Buttons beinhalten.



  • Wenn du ein Dialogprogramm möchtest, warum erstellst du dir dann keines und implementierts den Source für die Sockets in diese.
    SDI und MDI haben andere Stucturen.
    Klar kann man in einer SDI/MDI eine Dialog aufrufen. Dann muß aber auch der Socketsource in der Von diesem Dialog abgeleiteten Klasse sein. Sonnst macht es ja keinen Sinn da man ja erst wieder bei SDI/MDI bleiben kann.



  • danke für den tip (war im Urlaub!)
    habs jetzt umgeschrieben in ein dialogfeldbasierendes Projekt,
    aber die Verbindung funzt trotzdem nicht.

    ich habe eine Funktion OnConnectButton, in der irgendwann
    folgende if-Abfrage kommt:

    void ClientDlg::OnConnectButton()
    {
    ...
    if (((ClientApp*)AfxGetApp())->OpenConnection(ip, m_port))
    ...
    }
    

    In diese geht er aber nicht rein, also muss der Fehler bei
    der Funktion OpenConnection liegen, in der die
    Connect-Funktion aufgerufen wird:

    BOOL CClientObj::OpenConnection(const Ip &serverIp, int port)
    {
    ...
    if (!m_pClientSocket->Connect(serverIp.GetIp(), port))
    ...
    }
    

    Über GetIp wird die Ip geholt, die passt auch, Connect ist die
    Funktion der Klasse AsyncSocket.
    Trotzdem geht er in die if-Abfrage rein, er kann also keine Verbindung aufbauen.

    Hab ich irgendwas übersehen 😕



  • hat denn keiner eine idee?
    sobald ich die zeilen

    CMainFrame* pFrame = new CMainFrame;
    m_pMainWnd = pFrame;
    

    weglasse, funzt die Verbindung nicht mehr!

    tich 😕



  • Wie willst du beim Aufrufen einer Connectfunktion von einer Klasse, welche von CAsyncSocket abgeleitet ist, wissen ob ein Connect zustande kommt.
    Die Connectfunktion aus dier Klasse wird ausgeführt und das wars. Ob ein Connect zustandegekommen ist liefert dir das die von CAsyncSocket abgeleitete Klasse.

    Schaue dir dazu das Buch VC++ 6 in 21 Tagen an.
    www.mut.de in der lsesecke.


Anmelden zum Antworten