Problem mit CAsyncSocket
-
Hallo,
Habe ein Dialogfeld und verbinde im Netz zum Rechner 192.168.2.2 auf Port 21 (ftp).
Auf dem ..2.2 Rechner läuft ein ftp Server.Das Problem :
Wenn ich Methode Connect() aufrufe funktioniert es anscheinend und ich empfange
auch danach mit Receive() den Begrüßungstext "220FTP Server Ready", aber
die Methode Connect() gibt trotzdem immer FALSE zurück ! ????Beim Debuggen im Einzelschritt klappt alles bis auf das FALSE auf Anhieb,
jedoch ohne breaks empfange ich erst beim 2.Klick auf Connect Daten ????Was mache ich falsch ???
void CXPThemeTestDlg::OnBnClickedBconnect() { UpdateData(FALSE); char strIP[30]; char *pstrIP = &strIP[0]; char strBuffer[30]; char *pstrPort = &strBuffer[0]; int iPort = 0; m_ctEIp.GetWindowText(pstrIP,28); m_ctEPort.GetWindowText(pstrPort,28); iPort = atoi(pstrPort); //Verbinden !!! bool success = m_sMySocket.Connect((LPCTSTR)pstrIP,(UINT)iPort); CString strMeldung; strMeldung.Format("Verbindung zu %s auf Port %d hergestellt !",pstrIP,iPort); m_ctLLog.AddString((LPCTSTR)strMeldung); UpdateData(TRUE); char *pBuf = new char[1025]; int iBufSize = 1024; int iRcvd; CString strRecvd; iRcvd = m_sMySocket.Receive(pBuf, iBufSize); if(iRcvd == SOCKET_ERROR) { m_ctLLog.AddString((LPCTSTR)"Konnte Daten nicht empfangen !"); UpdateData(TRUE); } else { pBuf[iRcvd] = '\0'; strRecvd = pBuf; m_ctLLog.AddString((LPCTSTR)strRecvd); UpdateData(TRUE); } }
-
Deshalb ist es ja ASYNCsocket.
Um es jetzt nicht technisch zu erklären.
AsyncSocket arbeitet mit Nachrichten wenn du die Klasse verwendest. Das bedeutet das die Funktionen daraus immer zurückkehren.
Die Klasse liefert eine Anchricht wenn der Connect OK ist.Wenn du es so machen willst wie in deinem Code dann muss du
CSocket werwenden.
-
Ahh jetzt wird mir klar warum Async...
Danke !
