Daten senden



  • Hi @all,

    ich habe ein Problem beim Senden von Daten.
    Wenn ich mich verbinde (mit nen IRC-Server), klappt die Verbindung auch

    m_socket.Create();
    m_socket.Connect("nexgo.de.eu.dal.net", 7000);
    

    Der Server antwortet.
    Wenn ich jedoch Dater per Send verschicke, scheint er sie nicht zu kriegen.

    CString tempP = "PASS   \r\n"; 
    	m_socket.Send(tempP,sizeof(tempP));
    
    	CString tempN = "NICK ";
    	tempN += m_strUser;
    	tempN += "\r\n";	
    	m_socket.Send(tempN,sizeof(tempN));
    
    	CString tempU = "USER ";
    	CString tempUsername = GetUsersName();
    	tempU += (m_strUser + " "+ tempUsername +" server: "+m_strUser+"\r\n");
    	m_socket.Send(tempU,sizeof(tempU));
    	m_socket.Listen();
    

    Was mach ich falsch???

    Ach ja, beim Debuggen habe ich bemerkt, das nach m_socket.Connect 0 zurückgibt,
    Create 1 Send 4. Weiß aber nicht ob das irgendeine Bedeutung hat.



  • CAsyncSocket::Connect

    Return Value
    Nonzero if the function is successful; otherwise 0.

    Connect schlägt fehl. Und du bist sicher das der server Antwortet wenn der connect nicht erfolgreich war? 😉
    Das Send 4 zrückgibt kommt mir allerdings wieder komisch vor mit nem fehlgeschlagenen connect.
    Ruf mal GetLastError nach Connect auf um zu sehen was genau schief geht.



  • Der Connect kann nicht fehlschlagen. Ich empfange danach

    :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 hostname

    Wenn ich allerdings danach Passwort (in meinem Fall nicht gesetzt) User und Nick eingebe passiert nichts. Auch eine Antwort auf Ping schlägt fehl.
    Ich empfange

    PING :arcor.de.eu.dal.net

    und antworte mit

    char* temp = "PONG :arcor.de.eu.dal.net\r\n";
    m_socket.Send(LPCTSTR(temp),sizeof(temp));
    

    der Server reagiert aber darauf nicht.
    Was mach ich falsch?



  • *** mach aktuell ***



  • CSocket::Listen ist hier fehl am Platze. Lies mal die Beschreibung der Funktion. CSocket::Send gibt die Anzahl der Bytes zurück, die verschickt worden sind. Nachdem du ein PONG dem Server geschickt hast, muss er garnicht darauf antworten, erst bei einem neuen Event.

    Außerdem solltest du dir die Spezifikationen des IRC Protokolls durchlesen (RFC 2811, 2812)



  • Shlo schrieb:

    CSocket::Listen ist hier fehl am Platze.

    Das ist richtig, sollte aber auch keine Fehler verursachen.

    Die Protokolle RFC2811, 2812 habe ich mir auch schon angeschaut.
    Jodoch steht da die Verbindung genauso wie bei mir.

    Example:
    PASS secretpasswordhere

    Example:
    NICK Wiz ; Introducing new nick "Wiz" if session is
    still unregistered, or user changing his nickname to "Wiz"

    Example:
    USER guest 0 * :Ronnie Reagan ; User registering themselves with a
    username of "guest" and real name

    Deshalb versteh ich das ja auch nicht. Oder seh ich da was falsch?



  • *** mach aktuell ***


Anmelden zum Antworten