UDP Socket definieren

Variable in Winapp an Textfeld

Ich hab nochmal ne Frage und zwar, wie übergeb ich einen Wert, hier von m_lpCmdLine, aus Klasse Winapp an ein Eingabefeld in einer anderen Klasse?

Nachtrag, geht es zB mit

AfxMessageBox(AfxGetApp()->m_lpCmdLine);

?
 
IIRC sind die Afx*()-Funktionen von überall aufrufbar (sprich "normale" Funktion).
Also müsstest du prinzipiell in der "anderen Klasse" auch AfxGetApp() aufrufen können.
 
Also, gut, ich hab es jetzt geschafft die Serverdaten aus m_lpCmdLine auszulesen und hab die weichtigsten Funktionen aus dem Netzwerktutorial eingebaut. Eine Verbindung mit TCP klappt ohne Probleme nur schaff ich es immer noch nicht eine UDP Verbindung zu machen. Bei TCP kommt bei nicht erfolgter Verbindung, wenigstens eine Meldung, bei UDP gar nichts. Auch GetLastError brachte kein Ergebnis und der Debugger ist einfach weitergelaufen. Weiß wirklich keiner genau woran das liegt? Es würde ja wenigstens ein Programmbeispiel für UDP langen.
 
So, ich hab es jetzt geschafft mit nem Server Verbindung aufzunehmen,m es lag einfach daran, dass man sich mit UDP Server nicht verbinden kann, sonder einfach nur Daten übertragen oder empfangen. So, jetzt hab ich aber ein anderes Problem und zwar wird nicht die vollen empfangene Nachricht angezeigt, als Code verwende ich:

char *pBuf = new char[10250];
int iBufSize = 10240;
.
.
.
// Nachricht empfangen
iRcvd = m_ConnectSocket.Receive(pBuf, iBufSize);
// Ende der Nachricht abschneiden
pBuf[iRcvd] = NULL;
// Nachricht in einen CString kopieren
strRecvd = pBuf;
Message = strRecvd;

pBuf und iBufSize sind großzügig definiert, es wird aber von

"D[HoC]Overlord*tm*¡?áCHoolY³0"CaL_termAn?R‰DTequilauÝ4DSchmarkiúˆjDtaugenichts
råˆD[PDS][vF]Joka[ANC]õÝCbin_einkaufen[?C siQz.rebornšÉ1D
TRULLAj&:D
[FA]NightmareÛD aL_cApone'ÛC
RaMrOt.ÑCaL_lStaRýè¹C"

immer nur

"D[HoC]Overlord*tm*"

angezeigt, hat das vielleicht was mit dem Ascizeichen zu tun und wie kann ich es umgehen. Wenn ich mich noch an VB erinner, dann dürfte es sich bei dem Zeichen , also nach "D[HoC]Overlord*tm*", um ein Zeichen mit dem Ascicode 0 - 5 handeln.
 
Zuletzt bearbeitet:
Kann es sein, dass das Zeichen nach *tm* eine 0 ist?
Wenn du binäre Daten überträgst, darfst du natürlich nicht davon ausgehen, dass die erste 0 die du findest das String-Ende ist (was CString logischerweise tut, da es eine String-Klasse ist).
 
Du könntest die 0en durch andere Zeichen ersetzen. Die Daten entsprechen dann natürlich nicht mehr dem Original.
 
Das ist nicht ganz einfach. Die Daten kommen so vom Server und in pBuf, kann man im Debugger sehen, wird es genauso abgeschnitten. Die Nachricht kommt gar nicht vollständig zum string, da sie vorher schon da abgeschnitten wird.

C++ is scho kompliziert, in VB kam die Nachricht so wie sie is in die Variable.
 
VB verwendet eine String-Representation, die vor dem String die Länge speichert, C-Derivate verwenden 0-terminierte Strings.
Wg. Debugger: Achtung! Du SIEHST den String auch hier schon abgehakt, aber er ist es nicht. Der Debugger zeigt interperpreiter das ganze auch wieder als String und zeigt es auch nur bis zur ersten 0 an!
 
Und wie kann ich das jetzt durch ne andere Zahl ersetzen?

Gibt es in C++ auch etwas wie den Befehl in VB chr(...)? Damit hab ich in VB die Daten gefiltert.
 
Zurück