UDP-Verbindung



  • Hi Forum,

    mit TCP/IP habe ich bereits Erfahrung - ich nutze die mfc-Klasse CAsyncSocket. Um eine Client-Verbindung zu erstellen mache ich zuerst ein Create (mit SOCK_STREAM), dann ein Connect (hier übergebe ich IP-Adresse und Port-Nr.) und schon kann ich über Send und Receive Daten schicken und empfangen. Kennt jemand den Ansatz für eine UDP-Verbindung? In der MSDN steht nicht allzuviel drin...

    Frage 1: Gibt es bei UDP ebenfalls Server u. Clients? oder wird da nicht unterschieden - (lediglich der Port und die IP-Adresse der Gegenstelle müssen bekannt sein?...)

    Mein Ansatz zum Senden sieht wie folgt aus:

    CAsyncSocket sock;
    
    //Socket kreieren
    sock.Create(0, SOCK_DGRAM, FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, NULL);
    
    //Senden
    CString str = "HALLO, hört mich jemand?";
    int nRet = sock.SendTo(str, str.GetLength(), dwPort, strIP);
    
    // wobei nRet == str.GetLength() -> alles OK
    

    Frage 2: wie sollte jetzt die Gegenstelle aussehen?
    Mein Ansatz: einen Thread generieren, der wie folgt aussieht macht's nicht:

    CAsyncSocket sock;
    
    while(IrgendEineKondition)
    {
        TCHAR buff[4096];
        int nRead = sock.ReceiveFrom(buff, 4096, strIP, (UINT &)dwPort);
        if( nRead == SOCKET_ERROR)
        {
            DWORD dw = GetLastError();
            if( dw == WSAECONNRESET ) // The virtual circuit was reset by the remote side
            {
                //hier lande ich jedes mal...
            }
        }
    }
    

Anmelden zum Antworten