tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
260
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von mstank
    mstank mstank ist offline Mitglied Silber
    Registriert seit
    Nov 2004
    Ort
    Herten (NRW)
    Beiträge
    55
    Hi @ all!

    Für den Netzwerkzugriff habe ich die Klasse MySocket in einer dialogbasierten Anwendung. Die Dialogklasse heißt CStarDustUDPDlg. Die Methode OnReceive liefert mir die empfangenen Inhalte der UDP-Pakete.

    Diese werden immer in der Variablen m_strReceive angehangen. Ich möchte aber, daß nur der letzte übertragene Datensatz in der Variablen steht, damit ich ihn in ein StringArray schreiben kann.

    Bisher hatte ich entweder kein Erfolg oder aber der Inhalt der Variable wurde gelöscht und mit wurde nichts angezeigt.

    Anmerkung: In der Editbox stehen sie untereinander. Aber im gespeicherten File immer hintereinander.
    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
    
    void CMySocket::OnReceive(int nErrorCode) 
    {
     
     OutputDebugString("CMySocket::OnReceive\n");
     TCHAR buff[70000];
     int nRead;
     
     ((CStarDustUDPDlg*)m_pDlg)->UpdateData(TRUE);
     
     //Abfragen der Portadresse und der IP-Adresse
     nRead = ReceiveFrom(buff, 69999, ((CStarDustUDPDlg*)m_pDlg)->m_strRemote, ((CStarDustUDPDlg*)m_pDlg)->m_remoteport); //make it smaller so we can experiment mulitple notifications
     //Verzweigung für Fehlerbehandlung
     switch (nRead)
     {
     case 0:
      Close();
      break;
     
     case SOCKET_ERROR:
      if (GetLastError() != WSAEWOULDBLOCK) 
      {
       if (GetLastError() != WSAEMSGSIZE)
       {
        TCHAR szError[256];
        wsprintf(szError, "OnReceive error: %d", GetLastError());
        AfxMessageBox (szError);
       }
       else
       {
        AfxMessageBox ("Der Datensatz war zu lang und wurde abgeschnitten!");
        CString szTemp(buff);
        ((CStarDustUDPDlg*)m_pDlg)->m_strReceive += szTemp;
        ((CStarDustUDPDlg*)m_pDlg)->UpdateData(FALSE);
       }
      }
      break;
     
     //Wenn keine Fehler aufgetreten sind, dann Ausgabe
     default:
      if (nRead != SOCKET_ERROR && nRead != 0 )
      {
          TCHAR szError[256];
       wsprintf(szError, "OnReceive bytes: %d", nRead);   
       buff[nRead] = 0; //terminate the string
       CString szTemp(buff);
       ((CStarDustUDPDlg*)m_pDlg)->m_strReceive += szTemp;
       ((CStarDustUDPDlg*)m_pDlg)->UpdateData(FALSE);
      } 
     }
     
     CAsyncSocket::OnReceive(nErrorCode);
    }

    Hier der relevante Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
     //Wenn keine Fehler aufgetreten sind, dann Ausgabe
     default:
      if (nRead != SOCKET_ERROR && nRead != 0 )
      {
          TCHAR szError[256];
       wsprintf(szError, "OnReceive bytes: %d", nRead);   
       buff[nRead] = 0; //terminate the string
       CString szTemp(buff);
       ((CStarDustUDPDlg*)m_pDlg)->m_strReceive += szTemp;
       ((CStarDustUDPDlg*)m_pDlg)->UpdateData(FALSE);
      } 
     }
     CAsyncSocket::OnReceive(nErrorCode);
    }

    Wer kann mir da weiterhelfen?

    THX Markus
     
    Ergib dich der dunklen Seite der Macht!

  2. #2
    Avatar von colblake
    colblake colblake ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Ort
    dresden
    Beiträge
    214
    hi
    ändere mal:
    Code :
    1
    
    ((CStarDustUDPDlg*)m_pDlg)->m_strReceive += szTemp;

    in:
    Code :
    1
    
    ((CStarDustUDPDlg*)m_pDlg)->m_strReceive = szTemp;

    Ich hoffe ich konnte helfen.
    Mfg
     
    Über so viele Sachen wächst Gras , man kann keiner Wiese mehr trauen.

Ähnliche Themen

  1. Zeichenketten addieren?
    Von irdip-for-ever im Forum VisualStudio & MFC
    Antworten: 7
    Letzter Beitrag: 22.08.05, 07:37
  2. [c] Zeichenketten, Stringfunktionen
    Von satyja im Forum C/C++
    Antworten: 10
    Letzter Beitrag: 30.04.05, 17:05
  3. Zeichenketten vergleichen...
    Von GuenniFD im Forum C/C++
    Antworten: 13
    Letzter Beitrag: 11.01.05, 13:17
  4. Makro stoppen, wenn 3 Leerzeichen hintereinander stehen
    Von ChrisStangl im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 19.08.04, 08:18
  5. Aufspalten von Zeichenketten
    Von MagicMasterII im Forum PHP
    Antworten: 4
    Letzter Beitrag: 05.01.04, 17:14