tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
212
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von CodeFatal
    CodeFatal CodeFatal ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Beiträge
    509
    Hallo,

    ich arbeite mich gerade in das Thema Sockets ein.
    Es soll ein einfaches Server Client Problem gelöst werden.

    Neben kleinen Erfolgserlebnissen habe ich nun ein Problem, welches ich nicht nachvollziehn kann. Vielleicht hat eure Erfahrung ja mehr Glück

    Quellen:
    Neben einigen Foren und Internet Quellen arbeite ich mit dem CHATSERVER Beispiel.
    Das Anmelden an einem Server klappt auch bereits aber leider kann ich keine Daten versenden

    Folgenden Quellcode habe ich mir ausgedacht:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    
    HRESULT CMySocket::Init_Socket(SOCKET_TYP Typ)//Initialisiert Objekt je nach Wunsch als Server oder Client
    {
        Release_Socket();//Alles Alte erstmal raus
     
        m_Typ = Typ;
     
        if(m_Typ == TYP_CLIENT)
        {
            if(!Create())return E_FAIL;
        }
        else if(m_Typ == TYP_SERVER)
        {
            if(!Create(SOCKET_STANDARD_PORT))return E_FAIL;
            if(!Listen())return E_FAIL;
        }
        //else return E_FAIL;
     
        //In und Out Richtig machen
        int error=0;
        p_Fil_Socket = new CSocketFile(this);
        if(!p_Fil_Socket)error = 1;
        else
        {
            p_Arc_In = new CArchive(p_Fil_Socket,CArchive::load);
            if(!p_Arc_In)error = 3;
            else
            {
                p_Arc_Out = new CArchive(p_Fil_Socket,CArchive::store);
                if(!p_Arc_Out)error = 3;
            }
        }
     
        if(error)
        {
            Release_Socket();
            return E_FAIL;
        }
        return S_OK;
    }
     
     
    HRESULT CMySocket::TX_Data(RB_Socket_Data *p2Send)//Sendet Daten
    {
        if (p_Arc_Out != NULL)
        {
            if (p_Arc_Out->IsStoring())
            {
                TRY
                {
                    p_Arc_Out->Write(p2Send,SIZE_RB_SOCKET_DATA);
                    p_Arc_Out->Flush();
                }
                CATCH(CFileException, e)
                {
                    int error = GetLastError();
                    Release_Socket();
                }
                END_CATCH
            }
            else return E_FAIL;//Falsche Init
            return S_OK;
        }
        return E_FAIL;  
    }

    Von MySocket wird einmal CServer und einmal CClient abgeleitet.
    Rufe ich einmal die "Write" Funktion wird kein Fehler erzeugt. Allerdings kommt auch nichts in der OnReceive des Partners an.
    Bei dem zweiten Schreibversuch wird dann ein Fehler geschmissen. NR 6. Invalid Handle. Wo kommt das Ding her und was hab ich vergessen!?

    Hoffe ihr könnt mir helfen.

    Programmiere mit 2003.NET / XP / MFC

    Gruß Michael
     
    Grüß die Welt, dann grüßt sie dich!

    Keine Panik, die Titanic ist schon gesunken!

  2. #2
    Avatar von CodeFatal
    CodeFatal CodeFatal ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Beiträge
    509
    Hallo,

    Problem gelöst

    Folgende Einträge fehlten: (Jeweils für CMySocket, CServer und CClient)

    Header:
    DECLARE_DYNAMIC(CMySocket);

    CPP:
    IMPLEMENT_DYNAMIC(CMySocket, CSocket)

    Vielleicht hilft es ja dem nächsten. Die Zeilen sind auch in dem oben genannten Beispiel zu finden.

    Gruß Michael
     
    Grüß die Welt, dann grüßt sie dich!

    Keine Panik, die Titanic ist schon gesunken!

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 30.01.08, 10:24
  2. Antworten: 2
    Letzter Beitrag: 29.01.08, 14:59
  3. Child Handle -> Parent Handle
    Von dobermant im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 01.12.06, 02:08
  4. Handle für Socket
    Von gehrti im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 30.04.05, 01:20
  5. Antworten: 0
    Letzter Beitrag: 08.06.04, 20:31