Daten senden (die Zweite) Ich verzweifle langsam.
-
Hi @all,
ich möchte mit einem IRC-Server kommunizieren. Deshalb baue ich mir meinen eigenen Client (oder versuch es zumindest). :p
Die Connection habe ich auch schon aufgebaut.m_socket.Create(); m_socket.Connect("nexgo.de.eu.dal.net", 7000);Der Server antwortet mit:
:arcor.de.eu.dal.net NOTICE AUTH :*** Looking up your hostname...
:arcor.de.eu.dal.net NOTICE AUTH :*** Checking Ident
:arcor.de.eu.dal.net NOTICE AUTH :*** Found your hostnameJetzt will ich Daten für die Anmeldung an dem Server senden:
CString tempP = "PASS \r\n"; // im Augenblick noch ohne Passwort m_socket.Send(LPCTSTR(tempP),sizeof(tempP)); CString tempN = "NICK "; tempN += m_strUser; tempN += "\r\n"; m_socket.Send(LPCTSTR(tempN),sizeof(tempN)); CString tempU = "USER "; tempU += ("shad 0 0: Thomas Albrecht\r\n"); m_socket.Send(LPCTSTR(tempU),sizeof(tempU));Das ergibt in Klarschrift:
PASS
NICK Trikor
USER shad 0 0: Thomas AlbrechtWenn ich das über Telnet sende wird die Verbindung aufgebaut und ich kann mit
JOIN #Channelname einen IRC-Raum betreten/eröffnen.
Das RFT 2812 verlangt auch diese Reihenfolge.
Wenn ich das über meine socket-Funktion Send schicke bekomme ich erst einen Ping und dann einen Timeout. Also wird vermutlich irgendwas anders übertragen werden müssen. Aber wie???
-
Ping und dann einen Timeout
^^ da hast das problem doch

Du musst auf ein ping vom server auch richtig antworten
-
Das ist ja u.A. mit ein Problem.
Auf ein PING muß ich mit PONG antworten.
Ich bekomme vom Server :
PING arcor.de.eu.dal.net
und anworte.CString temp = "PONG arcor.de.eu.dal.net\r\n"; m_socket.Send(LPCTSTR(temp),sizeof(temp));Aber der Server scheint es nicht zu nehmen.
Und die Anmeldedaten werden direkt nach dem Connect versendet. Bis dahin kommt normalerweise noch kein PING
-
sizeof(temp)
*hust*
sizeof --> größe eines objects
Ein sizeof(CString) wird so ca 4 zurückgeben, aber dieser wert hat absolut nichts mit der länge des strings zu tun der dem im CSrting steckt.
Ich würde ein CString::GetLenght oder strlen((const char*)temp) verwenden, dürfe sicher aufschlussreicher über die anzahl der zu sendenden zeichen sein...
-
Ups, da hast Du wohl recht.
Ich habs auch direkt umgestellt.
Auf mein PONG reagiert der Server jetzt auch.
Allerdings mit
:arcor.de.eu.dal.net 451 PONG :Register first.
Aber das Registrieren versuche ich ja mitCString tempP = "PASS \r\n"; iLen = tempP.GetLength(); m_socket.Send(tempP,iLen); // Nick übergeben (Username Leaguez) CString tempN = "NICK "; tempN += m_strUser; tempN += "\r\n"; iLen = tempN.GetLength(); m_socket.Send(tempN,iLen); // User übergeben (Eideutige UserID) CString tempU = "USER "; CString tempUsername = GetUsersName(); tempU += ("shad 0 0: Thomas Albrecht\r\n"); iLen = tempU.GetLength(); m_socket.Send(tempU,iLen);ich bekomme aber weiterhin
:arcor.de.eu.dal.net NOTICE AUTH :*** No Ident response
Why???
-
Manchmal ist die Lösung so leicht.
Kleine Pause nach dem Connect und schon läufts.

Trotzdem Danke an alle die mir geholfen haben/wollten.
